Skip to content

Commit

Permalink
fix yaml visitor
Browse files Browse the repository at this point in the history
  • Loading branch information
choffmeister committed Nov 12, 2021
1 parent d4bdc08 commit 9427221
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions internal/yaml.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,20 +62,20 @@ func visitYamlRecursion(trace yamlTrace, yamlNode *yaml.Node, fn func(trace yaml
keyNode := yamlNode.Content[i]
valueNode := yamlNode.Content[i+1]
if valueNode.Kind == yaml.ScalarNode {
err := fn(append(trace, keyNode.Value), valueNode)
err := fn(nextYamlTrace(trace, keyNode.Value), valueNode)
if err != nil {
return err
}
} else {
err := visitYamlRecursion(append(trace, keyNode.Value), valueNode, fn)
err := visitYamlRecursion(nextYamlTrace(trace, keyNode.Value), valueNode, fn)
if err != nil {
return err
}
}
}
} else if yamlNode.Kind == yaml.SequenceNode {
for i, child := range yamlNode.Content {
err := visitYamlRecursion(append(trace, i), child, fn)
err := visitYamlRecursion(nextYamlTrace(trace, i), child, fn)
if err != nil {
return err
}
Expand All @@ -94,3 +94,10 @@ func visitYamlRecursion(trace yamlTrace, yamlNode *yaml.Node, fn func(trace yaml
func VisitYaml(yamlNode *yaml.Node, fn func(trace yamlTrace, yamlNode *yaml.Node) error) error {
return visitYamlRecursion(yamlTrace{}, yamlNode, fn)
}

func nextYamlTrace(trace yamlTrace, next interface{}) yamlTrace {
result := make(yamlTrace, len(trace))
copy(result, trace)
result = append(result, next)
return result
}

0 comments on commit 9427221

Please sign in to comment.