in format.go [767:826]
func (un *formatter) visitStructMap(expr ast.Expr) error {
m := expr.AsMap()
entries := m.Entries()
un.WriteString("{")
if un.isMultiline(expr) {
un.indent++
for i, e := range entries {
entry := e.AsMapEntry()
k := entry.Key()
un.WriteNewLine()
if entry.IsOptional() {
for _, c := range un.CommentBlock(e.ID()) {
un.WriteString(c)
un.WriteNewLine()
}
un.WriteString("?")
}
err := un.visit(k, false)
if err != nil {
return err
}
un.WriteString(": ")
v := entry.Value()
err = un.visit(v, false)
if err != nil {
return err
}
if un.options.alwaysComma || i < len(entries)-1 {
un.WriteString(",")
}
un.WriteString(un.Comment(un.lastChild(entry.Value()).ID()))
}
un.indent--
un.WriteNewLine()
un.WriteString("}")
} else {
for i, e := range entries {
entry := e.AsMapEntry()
k := entry.Key()
if entry.IsOptional() {
un.WriteString("?")
}
err := un.visit(k, false)
if err != nil {
return err
}
un.WriteString(": ")
v := entry.Value()
err = un.visit(v, false)
if err != nil {
return err
}
if i < len(entries)-1 {
un.WriteString(", ")
}
}
un.WriteString("}")
}
return nil
}