Print short []s and {}s for empty arrays/maps

This commit is contained in:
joeduffy 2017-07-06 00:13:37 -04:00
parent aeefc27a08
commit d05cbfa4ec

View file

@ -463,19 +463,29 @@ func printPropertyValue(b *bytes.Buffer, v resource.PropertyValue, planning bool
} else if v.IsString() { } else if v.IsString() {
b.WriteString(fmt.Sprintf("%q", v.StringValue())) b.WriteString(fmt.Sprintf("%q", v.StringValue()))
} else if v.IsArray() { } else if v.IsArray() {
b.WriteString(fmt.Sprintf("[\n")) arr := v.ArrayValue()
for i, elem := range v.ArrayValue() { if len(arr) == 0 {
newIndent := printArrayElemHeader(b, i, indent) b.WriteString("[]")
printPropertyValue(b, elem, planning, newIndent) } else {
b.WriteString(fmt.Sprintf("[\n"))
for i, elem := range arr {
newIndent := printArrayElemHeader(b, i, indent)
printPropertyValue(b, elem, planning, newIndent)
}
b.WriteString(fmt.Sprintf("%s]", indent))
} }
b.WriteString(fmt.Sprintf("%s]", indent))
} else if v.IsComputed() || v.IsOutput() { } else if v.IsComputed() || v.IsOutput() {
b.WriteString(v.TypeString()) b.WriteString(v.TypeString())
} else { } else {
contract.Assert(v.IsObject()) contract.Assert(v.IsObject())
b.WriteString("{\n") obj := v.ObjectValue()
printObject(b, v.ObjectValue(), planning, indent+" ") if len(obj) == 0 {
b.WriteString(fmt.Sprintf("%s}", indent)) b.WriteString("{}")
} else {
b.WriteString("{\n")
printObject(b, obj, planning, indent+" ")
b.WriteString(fmt.Sprintf("%s}", indent))
}
} }
b.WriteString("\n") b.WriteString("\n")
} }