in internal/s11n/match.go [108:144]
func filter(n *yaml.Node, query []string) bool {
for _, q := range query {
parts := strings.Split(q, "==")
var value *yaml.Node
if n.Kind == yaml.MappingNode {
for i := 0; i < len(n.Content); i += 2 {
if n.Content[i].Value == parts[0] {
value = n.Content[i+1]
break
}
}
if value == nil {
return false
}
} else if n.Kind == yaml.SequenceNode {
i, err := strconv.Atoi(parts[0])
if err != nil || i >= len(n.Content) {
return false
}
value = n.Content[i]
} else {
return false
}
if len(parts) == 2 && value.Value != parts[1] {
if value.Kind != yaml.ScalarNode {
return false
}
return false
}
}
return true
}