Add newlines around list of structs

Since a struct(parser.Map) occupies multiple lines, adding newlines
around brackets([]) looks better even the list has only a single value.

  prop: [ {
    name: "foo",
  }],

vs

  prop: [
    {
      name: "foo",
    },
  ],

Bug: n/a
Test: go test ./parser
Change-Id: I1a574aa038a26235848b6c9b5b4f01a0ab2c8c00
This commit is contained in:
Jooyung Han 2022-02-09 11:10:12 +09:00
parent 2df87f3cd9
commit 0cb1064428
2 changed files with 31 additions and 1 deletions

View file

@ -139,7 +139,7 @@ func (p *printer) printExpression(value Expression) {
func (p *printer) printList(list []Expression, pos, endPos scanner.Position) {
p.requestSpace()
p.printToken("[", pos)
if len(list) > 1 || pos.Line != endPos.Line {
if len(list) > 1 || pos.Line != endPos.Line || listHasMap(list) {
p.requestNewline()
p.indent(p.curIndent() + 4)
for _, value := range list {
@ -392,3 +392,12 @@ func max(a, b int) int {
return b
}
}
func listHasMap(list []Expression) bool {
for _, value := range list {
if _, ok := value.(*Map); ok {
return true
}
}
return false
}

View file

@ -426,6 +426,27 @@ stuff {
],
],
}
`,
},
{
input: `
// test
stuff {
namespace: "google",
list_of_structs: [{ key1: "a", key2: "b" }],
}
`,
output: `
// test
stuff {
namespace: "google",
list_of_structs: [
{
key1: "a",
key2: "b",
},
],
}
`,
},
}