From f35649bf65dfeaeb8106bdaa54d63fec9861267f Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 9 Apr 2022 14:36:31 +0200 Subject: [PATCH] arena: add NewNumberBytes --- arena.go | 12 ++++++++++++ arena_test.go | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/arena.go b/arena.go index 9fe21a4..669413f 100644 --- a/arena.go +++ b/arena.go @@ -110,6 +110,18 @@ func (a *Arena) NewNumberString(s string) *Value { return v } +// NewNumberBytes returns new number value containing s. +// +// The returned number is valid until Reset is called on a. +func (a *Arena) NewNumberBytes(b []byte) *Value { + v := a.c.getValue() + v.t = TypeNumber + bLen := len(a.b) + a.b = append(a.b, b...) + v.s = b2s(a.b[bLen:]) + return v +} + // NewNull returns null value. func (a *Arena) NewNull() *Value { return valueNull diff --git a/arena_test.go b/arena_test.go index eb8b265..8d5d790 100644 --- a/arena_test.go +++ b/arena_test.go @@ -56,6 +56,7 @@ func testArena(a *Arena) error { o.Set("ni", ni) o.Set("nf", a.NewNumberFloat64(1.23)) o.Set("ns", a.NewNumberString("34.43")) + o.Set("nb", a.NewNumberBytes([]byte("12.12"))) s := a.NewString("foo") o.Set("str1", s) o.Set("str2", a.NewStringBytes([]byte("xx"))) @@ -69,7 +70,7 @@ func testArena(a *Arena) error { o.Set("obj", obj) str := o.String() - strExpected := `{"nil1":null,"nil2":null,"false":false,"true":true,"ni":123,"nf":1.23,"ns":34.43,"str1":"foo","str2":"xx","a":["foo",123],"obj":{"s":"foo"}}` + strExpected := `{"nil1":null,"nil2":null,"false":false,"true":true,"ni":123,"nf":1.23,"ns":34.43,"nb":12.12,"str1":"foo","str2":"xx","a":["foo",123],"obj":{"s":"foo"}}` if str != strExpected { return fmt.Errorf("unexpected json\ngot\n%s\nwant\n%s", str, strExpected) }