|
|
|
|
@ -82,13 +82,13 @@ func (p *Builder) Reset() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (p *Builder) Any (value any) {
|
|
|
|
|
switch tp := value.(type) {
|
|
|
|
|
switch value.(type) {
|
|
|
|
|
case json.Marshaler :
|
|
|
|
|
p.state.SetError(p.jsonEncoder().Encode(value))
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
packs.BuildAny(p ,value,func(v any) error { return p.jsonEncoder().Encode(value) })
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -167,6 +167,10 @@ func (p *Builder) Int64(value int64) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if value == 0 {
|
|
|
|
|
if p.options.IgnoreDefaults() && p.state.Node.Kind == packs.NodeKindObject {
|
|
|
|
|
p.state.Truncate(p.state.Len())
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
p.state.WriteByte('0')
|
|
|
|
|
} else {
|
|
|
|
|
p.state.WriteIntStr(value, 10)
|
|
|
|
|
@ -210,12 +214,9 @@ func (p *Builder) Complex128(value complex128) {
|
|
|
|
|
p.state.WriteByte('"')
|
|
|
|
|
}
|
|
|
|
|
switch {
|
|
|
|
|
case value == 0:
|
|
|
|
|
p.state.Write(G.zeroValue)
|
|
|
|
|
case cmplx.IsInf(value):
|
|
|
|
|
p.state.Write(G.floatInfPos)
|
|
|
|
|
case cmplx.IsNaN(value):
|
|
|
|
|
p.state.Write(G.floatNaN)
|
|
|
|
|
case value == 0 : p.state.Write(G.zeroValue)
|
|
|
|
|
case cmplx.IsInf(value): p.state.Write(G.floatInfPos)
|
|
|
|
|
case cmplx.IsNaN(value): p.state.Write(G.floatNaN)
|
|
|
|
|
default:
|
|
|
|
|
r, i := real(value), imag(value)
|
|
|
|
|
p.state.WriteByte('"')
|
|
|
|
|
@ -333,12 +334,12 @@ func (p *Builder) Item() packs.Builder {
|
|
|
|
|
if p.state.Error != nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
if p.state.Node.Kind != packs.NodeKindList {
|
|
|
|
|
p.state.SetError(packs.G.ErrInvalidElement)
|
|
|
|
|
return nil
|
|
|
|
|
if p.state.Node.Kind == packs.NodeKindList {
|
|
|
|
|
p.setSep()
|
|
|
|
|
return p
|
|
|
|
|
}
|
|
|
|
|
p.setSep()
|
|
|
|
|
return p
|
|
|
|
|
p.state.SetError(packs.G.ErrInvalidElement)
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (p *Builder) Element(key any) packs.Builder {
|
|
|
|
|
@ -376,7 +377,7 @@ func (p *Builder) setKey(key string) bool {
|
|
|
|
|
}
|
|
|
|
|
p.setSep()
|
|
|
|
|
//todo key sanitize
|
|
|
|
|
p.string(key, p.options.EscapeHTML())
|
|
|
|
|
p.string(key)
|
|
|
|
|
p.state.WriteByte(':')
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
|