added EvaluateNodes and EvaluateCandidateNodes to yqlib

This commit is contained in:
Mikhail Katychev 2021-01-12 12:54:26 -06:00 committed by Mike Farah
parent 55712afea6
commit 9ae03e0a1c

View File

@ -166,6 +166,24 @@ func NodeToString(node *CandidateNode) string {
return fmt.Sprintf(`D%v, P%v, (%v)::%v`, node.Document, node.Path, tag, buf.String())
}
// EvaluateNodes takes an expression and one or more yaml nodes, returning a list of matching candidate nodes
func EvaluateNodes(expression string, nodes ...*yaml.Node) (*list.List, error) {
inputCandidates := list.New()
for _, node := range nodes {
inputCandidates.PushBack(&CandidateNode{Node: node})
}
return EvaluateCandidateNodes(expression, inputCandidates)
}
// EvaluateCandidateNodes takes an expression and list of candidate nodes, returning a list of matching candidate nodes
func EvaluateCandidateNodes(expression string, inputCandidates *list.List) (*list.List, error) {
node, err := treeCreator.ParsePath(expression)
if err != nil {
return nil, err
}
return treeNavigator.GetMatchingNodes(inputCandidates, node)
}
func KindString(kind yaml.Kind) string {
switch kind {
case yaml.ScalarNode: