in format.go [631:678]
func (un *formatter) visitList(expr ast.Expr) error {
l := expr.AsList()
elems := l.Elements()
optIndices := make(map[int]bool, len(elems))
for _, idx := range l.OptionalIndices() {
optIndices[int(idx)] = true
}
un.WriteString("[")
if un.isMultiline(expr) {
un.indent++
for i, elem := range elems {
un.WriteNewLine()
if optIndices[i] {
for _, c := range un.CommentBlock(elem.ID()) {
un.WriteString(c)
un.WriteNewLine()
}
un.WriteString("?")
}
err := un.visit(elem, false)
if err != nil {
return err
}
if un.options.alwaysComma || i < len(elems)-1 {
un.WriteString(",")
}
un.WriteString(un.Comment(un.lastChild(elem).ID()))
}
un.indent--
un.WriteNewLine()
un.WriteString("]")
} else {
for i, elem := range elems {
if optIndices[i] {
un.WriteString("?")
}
err := un.visit(elem, false)
if err != nil {
return err
}
if i < len(elems)-1 {
un.WriteString(", ")
}
}
un.WriteString("]")
}
return nil
}