Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a3d5a0bb53 | |||
| d00d2cca6e |
@@ -57,7 +57,11 @@ type SeenTracker struct {
|
||||
currentIdx int
|
||||
}
|
||||
|
||||
var pool sync.Pool
|
||||
var pool = sync.Pool{
|
||||
New: func() interface{} {
|
||||
return &SeenTracker{}
|
||||
},
|
||||
}
|
||||
|
||||
func (s *SeenTracker) reset() {
|
||||
// Always contains a root element at index 0.
|
||||
@@ -331,12 +335,6 @@ func (s *SeenTracker) checkArray(node *unstable.Node) (first bool, err error) {
|
||||
}
|
||||
|
||||
func (s *SeenTracker) checkInlineTable(node *unstable.Node) (first bool, err error) {
|
||||
if pool.New == nil {
|
||||
pool.New = func() interface{} {
|
||||
return &SeenTracker{}
|
||||
}
|
||||
}
|
||||
|
||||
s = pool.Get().(*SeenTracker)
|
||||
s.reset()
|
||||
|
||||
|
||||
@@ -1025,6 +1025,10 @@ func (enc *Encoder) encodeSliceAsArrayTable(b []byte, ctx encoderCtx, v reflect.
|
||||
|
||||
scratch = enc.commented(ctx.commented, scratch)
|
||||
|
||||
if enc.indentTables {
|
||||
scratch = enc.indent(ctx.indent, scratch)
|
||||
}
|
||||
|
||||
scratch = append(scratch, "[["...)
|
||||
|
||||
for i, k := range ctx.parentKey {
|
||||
|
||||
@@ -1499,6 +1499,43 @@ func TestMarshalCommented(t *testing.T) {
|
||||
require.Equal(t, expected, string(out))
|
||||
}
|
||||
|
||||
func TestMarshalIndentedCustomTypeArray(t *testing.T) {
|
||||
c := struct {
|
||||
Nested struct {
|
||||
NestedArray []struct {
|
||||
Value int
|
||||
}
|
||||
}
|
||||
}{
|
||||
Nested: struct {
|
||||
NestedArray []struct {
|
||||
Value int
|
||||
}
|
||||
}{
|
||||
NestedArray: []struct {
|
||||
Value int
|
||||
}{
|
||||
{Value: 1},
|
||||
{Value: 2},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
expected := `[Nested]
|
||||
[[Nested.NestedArray]]
|
||||
Value = 1
|
||||
|
||||
[[Nested.NestedArray]]
|
||||
Value = 2
|
||||
`
|
||||
|
||||
var buf bytes.Buffer
|
||||
enc := toml.NewEncoder(&buf)
|
||||
enc.SetIndentTables(true)
|
||||
require.NoError(t, enc.Encode(c))
|
||||
require.Equal(t, expected, buf.String())
|
||||
}
|
||||
|
||||
func ExampleMarshal() {
|
||||
type MyConfig struct {
|
||||
Version int
|
||||
|
||||
Reference in New Issue
Block a user