]> Cypherpunks repositories - gostls13.git/commitdiff
encoding/json: rename Indent method to SetIndent
authorRuss Cox <rsc@golang.org>
Mon, 23 May 2016 16:28:56 +0000 (12:28 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 24 May 2016 15:01:29 +0000 (15:01 +0000)
CL 21057 added this method during the Go 1.7 cycle
(so it is not yet released and still possible to revise).

This makes it clearer that the method is not doing something
(like func Indent does), but just changing a setting about doing
something later.

Also document that this is in some sense irreversible.
I think that's probably a mistake but the original CL discussion
claimed it as a feature, so I'll leave it alone.

For #6492.

Change-Id: If4415c869a9196501056c143811a308822d5a420
Reviewed-on: https://go-review.googlesource.com/23295
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Andrew Gerrand <adg@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>

src/encoding/json/stream.go
src/encoding/json/stream_test.go

index dba978aa66243365e00b87bb5abd1046d2621a54..87f0e57c6cdb5cc810220700b287145d95f858e4 100644 (file)
@@ -204,7 +204,10 @@ func (enc *Encoder) Encode(v interface{}) error {
        e.WriteByte('\n')
 
        b := e.Bytes()
-       if enc.indentBuf != nil {
+       if enc.indentPrefix != "" || enc.indentValue != "" {
+               if enc.indentBuf == nil {
+                       enc.indentBuf = new(bytes.Buffer)
+               }
                enc.indentBuf.Reset()
                err = Indent(enc.indentBuf, b, enc.indentPrefix, enc.indentValue)
                if err != nil {
@@ -219,9 +222,10 @@ func (enc *Encoder) Encode(v interface{}) error {
        return err
 }
 
-// Indent sets the encoder to format each encoded value with Indent.
-func (enc *Encoder) Indent(prefix, indent string) {
-       enc.indentBuf = new(bytes.Buffer)
+// SetIndent instructs the encoder to format each subsequent encoded
+// value as if indented by the package-level function Indent(dst, src, prefix, indent).
+// Calling SetIndent("", "") disables indentation.
+func (enc *Encoder) SetIndent(prefix, indent string) {
        enc.indentPrefix = prefix
        enc.indentValue = indent
 }
@@ -230,7 +234,7 @@ func (enc *Encoder) Indent(prefix, indent string) {
 // should be escaped inside JSON quoted strings.
 // The default behavior is to escape &, <, and > to \u0026, \u003c, and \u003e
 // to avoid certain safety problems that can arise when embedding JSON in HTML.
-// 
+//
 // In non-HTML settings where the escaping interferes with the readability
 // of the output, SetEscapeHTML(false) disables this behavior.
 func (enc *Encoder) SetEscapeHTML(on bool) {
index 0d578ce24dadf6b1e7898b5c3bd03423d97fbcd4..84edeb187c259240facd75ae2e62fffc75e29539 100644 (file)
@@ -44,6 +44,9 @@ func TestEncoder(t *testing.T) {
        for i := 0; i <= len(streamTest); i++ {
                var buf bytes.Buffer
                enc := NewEncoder(&buf)
+               // Check that enc.SetIndent("", "") turns off indentation.
+               enc.SetIndent(">", ".")
+               enc.SetIndent("", "")
                for j, v := range streamTest[0:i] {
                        if err := enc.Encode(v); err != nil {
                                t.Fatalf("encode #%d: %v", j, err)
@@ -77,7 +80,7 @@ false
 func TestEncoderIndent(t *testing.T) {
        var buf bytes.Buffer
        enc := NewEncoder(&buf)
-       enc.Indent(">", ".")
+       enc.SetIndent(">", ".")
        for _, v := range streamTest {
                enc.Encode(v)
        }