diff --git a/hclwrite/examples_test.go b/hclwrite/examples_test.go index 78882efb..f848ce29 100644 --- a/hclwrite/examples_test.go +++ b/hclwrite/examples_test.go @@ -48,9 +48,13 @@ func Example_generateFromScratch() { // Output: // string = "foo" // - // object = { bar = 5, baz = true, foo = "foo" } - // bool = false - // path = env.PATH + // object = { + // bar = 5 + // baz = true + // foo = "foo" + // } + // bool = false + // path = env.PATH // // foo { // hello = "world" diff --git a/hclwrite/generate.go b/hclwrite/generate.go index 4d439acd..48e13121 100644 --- a/hclwrite/generate.go +++ b/hclwrite/generate.go @@ -119,15 +119,15 @@ func appendTokensForValue(val cty.Value, toks Tokens) Tokens { Type: hclsyntax.TokenOBrace, Bytes: []byte{'{'}, }) + if val.LengthInt() > 0 { + toks = append(toks, &Token{ + Type: hclsyntax.TokenNewline, + Bytes: []byte{'\n'}, + }) + } i := 0 for it := val.ElementIterator(); it.Next(); { - if i > 0 { - toks = append(toks, &Token{ - Type: hclsyntax.TokenComma, - Bytes: []byte{','}, - }) - } eKey, eVal := it.Element() if hclsyntax.ValidIdentifier(eKey.AsString()) { toks = append(toks, &Token{ @@ -142,6 +142,10 @@ func appendTokensForValue(val cty.Value, toks Tokens) Tokens { Bytes: []byte{'='}, }) toks = appendTokensForValue(eVal, toks) + toks = append(toks, &Token{ + Type: hclsyntax.TokenNewline, + Bytes: []byte{'\n'}, + }) i++ } diff --git a/hclwrite/generate_test.go b/hclwrite/generate_test.go index 112ff825..d74a086f 100644 --- a/hclwrite/generate_test.go +++ b/hclwrite/generate_test.go @@ -340,10 +340,14 @@ func TestTokensForValue(t *testing.T) { Type: hclsyntax.TokenOBrace, Bytes: []byte(`{`), }, + { + Type: hclsyntax.TokenNewline, + Bytes: []byte("\n"), + }, { Type: hclsyntax.TokenIdent, Bytes: []byte(`foo`), - SpacesBefore: 1, + SpacesBefore: 2, }, { Type: hclsyntax.TokenEqual, @@ -356,9 +360,12 @@ func TestTokensForValue(t *testing.T) { SpacesBefore: 1, }, { - Type: hclsyntax.TokenCBrace, - Bytes: []byte(`}`), - SpacesBefore: 1, + Type: hclsyntax.TokenNewline, + Bytes: []byte("\n"), + }, + { + Type: hclsyntax.TokenCBrace, + Bytes: []byte(`}`), }, }, }, @@ -372,10 +379,14 @@ func TestTokensForValue(t *testing.T) { Type: hclsyntax.TokenOBrace, Bytes: []byte(`{`), }, + { + Type: hclsyntax.TokenNewline, + Bytes: []byte("\n"), + }, { Type: hclsyntax.TokenIdent, Bytes: []byte(`bar`), - SpacesBefore: 1, + SpacesBefore: 2, }, { Type: hclsyntax.TokenEqual, @@ -388,13 +399,13 @@ func TestTokensForValue(t *testing.T) { SpacesBefore: 1, }, { - Type: hclsyntax.TokenComma, - Bytes: []byte(`,`), + Type: hclsyntax.TokenNewline, + Bytes: []byte("\n"), }, { Type: hclsyntax.TokenIdent, Bytes: []byte(`foo`), - SpacesBefore: 1, + SpacesBefore: 2, }, { Type: hclsyntax.TokenEqual, @@ -407,9 +418,12 @@ func TestTokensForValue(t *testing.T) { SpacesBefore: 1, }, { - Type: hclsyntax.TokenCBrace, - Bytes: []byte(`}`), - SpacesBefore: 1, + Type: hclsyntax.TokenNewline, + Bytes: []byte("\n"), + }, + { + Type: hclsyntax.TokenCBrace, + Bytes: []byte(`}`), }, }, }, @@ -422,10 +436,14 @@ func TestTokensForValue(t *testing.T) { Type: hclsyntax.TokenOBrace, Bytes: []byte(`{`), }, + { + Type: hclsyntax.TokenNewline, + Bytes: []byte("\n"), + }, { Type: hclsyntax.TokenOQuote, Bytes: []byte(`"`), - SpacesBefore: 1, + SpacesBefore: 2, }, { Type: hclsyntax.TokenQuotedLit, @@ -446,9 +464,12 @@ func TestTokensForValue(t *testing.T) { SpacesBefore: 1, }, { - Type: hclsyntax.TokenCBrace, - Bytes: []byte(`}`), - SpacesBefore: 1, + Type: hclsyntax.TokenNewline, + Bytes: []byte("\n"), + }, + { + Type: hclsyntax.TokenCBrace, + Bytes: []byte(`}`), }, }, },