pkg/components: Check errors (#19703)

* pkg/components: Check errors
This commit is contained in:
Arve Knudsen
2019-10-10 09:06:55 +02:00
committed by GitHub
parent 9b483e765b
commit fe8d0d27d2
5 changed files with 104 additions and 53 deletions

View File

@ -141,9 +141,13 @@ type AsciiLine struct {
func (f *JSONFormatter) Format(diff diff.Diff) (result string, err error) {
if v, ok := f.left.(map[string]interface{}); ok {
f.formatObject(v, diff)
if err := f.formatObject(v, diff); err != nil {
return "", err
}
} else if v, ok := f.left.([]interface{}); ok {
f.formatArray(v, diff)
if err := f.formatArray(v, diff); err != nil {
return "", err
}
} else {
return "", fmt.Errorf("expected map[string]interface{} or []interface{}, got %T",
f.left)
@ -155,29 +159,43 @@ func (f *JSONFormatter) Format(diff diff.Diff) (result string, err error) {
fmt.Printf("%v\n", err)
return "", err
}
return b.String(), nil
}
func (f *JSONFormatter) formatObject(left map[string]interface{}, df diff.Diff) {
func (f *JSONFormatter) formatObject(left map[string]interface{}, df diff.Diff) error {
f.addLineWith(ChangeNil, "{")
f.push("ROOT", len(left), false)
f.processObject(left, df.Deltas())
if err := f.processObject(left, df.Deltas()); err != nil {
f.pop()
return err
}
f.pop()
f.addLineWith(ChangeNil, "}")
return nil
}
func (f *JSONFormatter) formatArray(left []interface{}, df diff.Diff) {
func (f *JSONFormatter) formatArray(left []interface{}, df diff.Diff) error {
f.addLineWith(ChangeNil, "[")
f.push("ROOT", len(left), true)
f.processArray(left, df.Deltas())
if err := f.processArray(left, df.Deltas()); err != nil {
f.pop()
return err
}
f.pop()
f.addLineWith(ChangeNil, "]")
return nil
}
func (f *JSONFormatter) processArray(array []interface{}, deltas []diff.Delta) error {
patchedIndex := 0
for index, value := range array {
f.processItem(value, deltas, diff.Index(index))
if err := f.processItem(value, deltas, diff.Index(index)); err != nil {
return err
}
patchedIndex++
}
@ -201,7 +219,9 @@ func (f *JSONFormatter) processObject(object map[string]interface{}, deltas []di
names := sortKeys(object)
for _, name := range names {
value := object[name]
f.processItem(value, deltas, diff.Name(name))
if err := f.processItem(value, deltas, diff.Name(name)); err != nil {
return err
}
}
// Added
@ -236,7 +256,11 @@ func (f *JSONFormatter) processItem(value interface{}, deltas []diff.Delta, posi
f.print("{")
f.closeLine()
f.push(positionStr, len(o), false)
f.processObject(o, matchedDelta.Deltas)
if err := f.processObject(o, matchedDelta.Deltas); err != nil {
f.pop()
return err
}
f.pop()
f.newLine(ChangeNil)
f.print("}")
@ -257,7 +281,11 @@ func (f *JSONFormatter) processItem(value interface{}, deltas []diff.Delta, posi
f.print("[")
f.closeLine()
f.push(positionStr, len(a), true)
f.processArray(a, matchedDelta.Deltas)
if err := f.processArray(a, matchedDelta.Deltas); err != nil {
f.pop()
return err
}
f.pop()
f.newLine(ChangeNil)
f.print("]")