diff options
author | Russ Cox <rsc@golang.org> | 2009-01-16 10:14:38 -0800 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2009-01-16 10:14:38 -0800 |
commit | 27026881edb14bf3e449b5ddc27767ce15fc11cb (patch) | |
tree | c3556dc8c914a5be09d0efc7d357369a76867b0d /src/lib/json/generic.go | |
parent | 07b29e74deba1289f518d5f49147c966b119d1f3 (diff) | |
download | golang-27026881edb14bf3e449b5ddc27767ce15fc11cb.tar.gz |
casify json
R=r
DELTA=163 (0 added, 0 deleted, 163 changed)
OCL=22910
CL=22939
Diffstat (limited to 'src/lib/json/generic.go')
-rw-r--r-- | src/lib/json/generic.go | 128 |
1 files changed, 64 insertions, 64 deletions
diff --git a/src/lib/json/generic.go b/src/lib/json/generic.go index f562a0e7f..1fef3fb12 100644 --- a/src/lib/json/generic.go +++ b/src/lib/json/generic.go @@ -44,40 +44,40 @@ export func JsonToString(j Json) string { return j.String() } -type Null struct { } -export var null Json = &Null{} -func (*Null) Kind() int { return NullKind } -func (*Null) String() string { return "null" } -func (*Null) Number() float64 { return 0 } -func (*Null) Bool() bool { return false } -func (*Null) Get(s string) Json { return null } -func (*Null) Elem(int) Json { return null } -func (*Null) Len() int { return 0 } - -type String struct { s string; Null } -func (j *String) Kind() int { return StringKind } -func (j *String) String() string { return j.s } - -type Number struct { f float64; Null } -func (j *Number) Kind() int { return NumberKind } -func (j *Number) Number() float64 { return j.f } -func (j *Number) String() string { +type _Null struct { } +export var Null Json = &_Null{} +func (*_Null) Kind() int { return NullKind } +func (*_Null) String() string { return "null" } +func (*_Null) Number() float64 { return 0 } +func (*_Null) Bool() bool { return false } +func (*_Null) Get(s string) Json { return Null } +func (*_Null) Elem(int) Json { return Null } +func (*_Null) Len() int { return 0 } + +type _String struct { s string; _Null } +func (j *_String) Kind() int { return StringKind } +func (j *_String) String() string { return j.s } + +type _Number struct { f float64; _Null } +func (j *_Number) Kind() int { return NumberKind } +func (j *_Number) Number() float64 { return j.f } +func (j *_Number) String() string { if math.Floor(j.f) == j.f { return fmt.Sprintf("%.0f", j.f); } return fmt.Sprintf("%g", j.f); } -type Array struct { a *array.Array; Null } -func (j *Array) Kind() int { return ArrayKind } -func (j *Array) Len() int { return j.a.Len() } -func (j *Array) Elem(i int) Json { +type _Array struct { a *array.Array; _Null } +func (j *_Array) Kind() int { return ArrayKind } +func (j *_Array) Len() int { return j.a.Len() } +func (j *_Array) Elem(i int) Json { if i < 0 || i >= j.a.Len() { - return null + return Null } return j.a.At(i) } -func (j *Array) String() string { +func (j *_Array) String() string { s := "["; for i := 0; i < j.a.Len(); i++ { if i > 0 { @@ -89,29 +89,29 @@ func (j *Array) String() string { return s; } -type Bool struct { b bool; Null } -func (j *Bool) Kind() int { return BoolKind } -func (j *Bool) Bool() bool { return j.b } -func (j *Bool) String() string { +type _Bool struct { b bool; _Null } +func (j *_Bool) Kind() int { return BoolKind } +func (j *_Bool) Bool() bool { return j.b } +func (j *_Bool) String() string { if j.b { return "true" } return "false" } -type Map struct { m map[string]Json; Null } -func (j *Map) Kind() int { return MapKind } -func (j *Map) Get(s string) Json { +type _Map struct { m map[string]Json; _Null } +func (j *_Map) Kind() int { return MapKind } +func (j *_Map) Get(s string) Json { if j.m == nil { - return null + return Null } v, ok := j.m[s]; if !ok { - return null + return Null } return v; } -func (j *Map) String() string { +func (j *_Map) String() string { s := "{"; first := true; for k,v := range j.m { @@ -142,13 +142,13 @@ export func Walk(j Json, path string) Json { case ArrayKind: indx, err := strconv.Atoi(elem); if err != nil { - return null + return Null } j = j.Elem(indx); case MapKind: j = j.Get(elem); default: - return null + return Null } } return j @@ -184,8 +184,8 @@ export func Equal(a, b Json) bool { } return true; case MapKind: - m := a.(*Map).m; - if len(m) != len(b.(*Map).m) { + m := a.(*_Map).m; + if len(m) != len(b.(*_Map).m) { return false; } for k,v := range m { @@ -203,7 +203,7 @@ export func Equal(a, b Json) bool { // Parse builder for Json objects. -type JsonBuilder struct { +type _JsonBuilder struct { // either writing to *ptr ptr *Json; @@ -216,7 +216,7 @@ type JsonBuilder struct { k string; } -func (b *JsonBuilder) Put(j Json) { +func (b *_JsonBuilder) Put(j Json) { switch { case b.ptr != nil: *b.ptr = j; @@ -227,7 +227,7 @@ func (b *JsonBuilder) Put(j Json) { } } -func (b *JsonBuilder) Get() Json { +func (b *_JsonBuilder) Get() Json { switch { case b.ptr != nil: return *b.ptr; @@ -239,61 +239,61 @@ func (b *JsonBuilder) Get() Json { return nil } -func (b *JsonBuilder) Float64(f float64) { - b.Put(&Number{f, Null{}}) +func (b *_JsonBuilder) Float64(f float64) { + b.Put(&_Number{f, _Null{}}) } -func (b *JsonBuilder) Int64(i int64) { +func (b *_JsonBuilder) Int64(i int64) { b.Float64(float64(i)) } -func (b *JsonBuilder) Uint64(i uint64) { +func (b *_JsonBuilder) Uint64(i uint64) { b.Float64(float64(i)) } -func (b *JsonBuilder) Bool(tf bool) { - b.Put(&Bool{tf, Null{}}) +func (b *_JsonBuilder) Bool(tf bool) { + b.Put(&_Bool{tf, _Null{}}) } -func (b *JsonBuilder) Null() { - b.Put(null) +func (b *_JsonBuilder) Null() { + b.Put(Null) } -func (b *JsonBuilder) String(s string) { - b.Put(&String{s, Null{}}) +func (b *_JsonBuilder) String(s string) { + b.Put(&_String{s, _Null{}}) } -func (b *JsonBuilder) Array() { - b.Put(&Array{array.New(0), Null{}}) +func (b *_JsonBuilder) Array() { + b.Put(&_Array{array.New(0), _Null{}}) } -func (b *JsonBuilder) Map() { - b.Put(&Map{make(map[string]Json), Null{}}) +func (b *_JsonBuilder) Map() { + b.Put(&_Map{make(map[string]Json), _Null{}}) } -func (b *JsonBuilder) Elem(i int) Builder { - bb := new(JsonBuilder); - bb.a = b.Get().(*Array).a; +func (b *_JsonBuilder) Elem(i int) Builder { + bb := new(_JsonBuilder); + bb.a = b.Get().(*_Array).a; bb.i = i; for i >= bb.a.Len() { - bb.a.Push(null) + bb.a.Push(Null) } return bb } -func (b *JsonBuilder) Key(k string) Builder { - bb := new(JsonBuilder); - bb.m = b.Get().(*Map).m; +func (b *_JsonBuilder) Key(k string) Builder { + bb := new(_JsonBuilder); + bb.m = b.Get().(*_Map).m; bb.k = k; - bb.m[k] = null; + bb.m[k] = Null; return bb } export func StringToJson(s string) (json Json, ok bool, errtok string) { var errindx int; var j Json; - b := new(JsonBuilder); + b := new(_JsonBuilder); b.ptr = &j; ok, errindx, errtok = Parse(s, b); if !ok { |