diff --git a/feature_adapter.go b/feature_adapter.go index 0faa05c..ccbad15 100644 --- a/feature_adapter.go +++ b/feature_adapter.go @@ -172,7 +172,9 @@ func (decoder *AdaptedDecoder) UseNumber() { } func NewEncoder(writer io.Writer) *AdaptedEncoder { - stream := NewStream(DEFAULT_CONFIG, writer, 512) + newCfg := &Config{} + initConfig(newCfg) + stream := NewStream(newCfg, writer, 512) return &AdaptedEncoder{stream} } @@ -187,5 +189,5 @@ func (adapter *AdaptedEncoder) Encode(val interface{}) error { } func (adapter *AdaptedEncoder) SetIndent(prefix, indent string) { - adapter.stream.IndentionStep = len(indent) + adapter.stream.cfg.IndentionStep = len(indent) } diff --git a/feature_config.go b/feature_config.go index 3dd7be6..3d635f2 100644 --- a/feature_config.go +++ b/feature_config.go @@ -7,6 +7,7 @@ import ( ) type Config struct { + IndentionStep int decoderCache unsafe.Pointer encoderCache unsafe.Pointer } diff --git a/feature_stream.go b/feature_stream.go index f6dee0d..69e3e5e 100644 --- a/feature_stream.go +++ b/feature_stream.go @@ -11,7 +11,6 @@ type Stream struct { n int Error error indention int - IndentionStep int } func NewStream(cfg *Config, out io.Writer, bufSize int) *Stream { @@ -22,7 +21,6 @@ func NewStream(cfg *Config, out io.Writer, bufSize int) *Stream { n: 0, Error: nil, indention: 0, - IndentionStep: 0, } } @@ -278,7 +276,7 @@ func (stream *Stream) WriteBool(val bool) { } func (stream *Stream) WriteObjectStart() { - stream.indention += stream.IndentionStep + stream.indention += stream.cfg.IndentionStep stream.writeByte('{') stream.writeIndention(0) } @@ -289,8 +287,8 @@ func (stream *Stream) WriteObjectField(field string) { } func (stream *Stream) WriteObjectEnd() { - stream.writeIndention(stream.IndentionStep) - stream.indention -= stream.IndentionStep + stream.writeIndention(stream.cfg.IndentionStep) + stream.indention -= stream.cfg.IndentionStep stream.writeByte('}') } @@ -305,7 +303,7 @@ func (stream *Stream) WriteMore() { } func (stream *Stream) WriteArrayStart() { - stream.indention += stream.IndentionStep + stream.indention += stream.cfg.IndentionStep stream.writeByte('[') stream.writeIndention(0) } @@ -316,8 +314,8 @@ func (stream *Stream) WriteEmptyArray() { } func (stream *Stream) WriteArrayEnd() { - stream.writeIndention(stream.IndentionStep) - stream.indention -= stream.IndentionStep + stream.writeIndention(stream.cfg.IndentionStep) + stream.indention -= stream.cfg.IndentionStep stream.writeByte(']') } diff --git a/jsoniter_array_test.go b/jsoniter_array_test.go index ef0176b..13e42b9 100644 --- a/jsoniter_array_test.go +++ b/jsoniter_array_test.go @@ -213,8 +213,9 @@ func Test_whitespace_before_comma(t *testing.T) { func Test_write_array(t *testing.T) { should := require.New(t) buf := &bytes.Buffer{} - stream := NewStream(DEFAULT_CONFIG, buf, 4096) - stream.IndentionStep = 2 + newCfg := &Config{IndentionStep: 2} + initConfig(newCfg) + stream := NewStream(newCfg, buf, 4096) stream.WriteArrayStart() stream.WriteInt(1) stream.WriteMore() diff --git a/jsoniter_object_test.go b/jsoniter_object_test.go index 881171e..a25dc89 100644 --- a/jsoniter_object_test.go +++ b/jsoniter_object_test.go @@ -210,8 +210,9 @@ func Test_object_wrapper_any_get_all(t *testing.T) { func Test_write_object(t *testing.T) { should := require.New(t) buf := &bytes.Buffer{} - stream := NewStream(DEFAULT_CONFIG, buf, 4096) - stream.IndentionStep = 2 + newCfg := &Config{IndentionStep: 2} + initConfig(newCfg) + stream := NewStream(newCfg, buf, 4096) stream.WriteObjectStart() stream.WriteObjectField("hello") stream.WriteInt(1) diff --git a/jsoniter_stream_test.go b/jsoniter_stream_test.go index 70dffb5..c45c5dc 100644 --- a/jsoniter_stream_test.go +++ b/jsoniter_stream_test.go @@ -31,8 +31,9 @@ func Test_writeBytes_should_grow_buffer(t *testing.T) { func Test_writeIndention_should_grow_buffer(t *testing.T) { should := require.New(t) - stream := NewStream(DEFAULT_CONFIG, nil, 1) - stream.IndentionStep = 2 + newCfg := &Config{IndentionStep: 2} + initConfig(newCfg) + stream := NewStream(newCfg, nil, 1) stream.WriteVal([]int{1, 2, 3}) should.Equal("[\n 1,\n 2,\n 3\n]", string(stream.Buffer())) }