MCPcopy
hub / github.com/kubernetes/client-go / FindResults

Method FindResults

util/jsonpath/jsonpath.go:79–119  ·  view source on GitHub ↗
(data interface{})

Source from the content-addressed store, hash-verified

77}
78
79func (j *JSONPath) FindResults(data interface{}) ([][]reflect.Value, error) {
80 if j.parser == nil {
81 return nil, fmt.Errorf("%s is an incomplete jsonpath template", j.name)
82 }
83
84 j.cur = []reflect.Value{reflect.ValueOf(data)}
85 nodes := j.parser.Root.Nodes
86 fullResult := [][]reflect.Value{}
87 for i := 0; i < len(nodes); i++ {
88 node := nodes[i]
89 results, err := j.walk(j.cur, node)
90 if err != nil {
91 return nil, err
92 }
93
94 // encounter an end node, break the current block
95 if j.endRange > 0 && j.endRange <= j.inRange {
96 j.endRange--
97 break
98 }
99 // encounter a range node, start a range loop
100 if j.beginRange > 0 {
101 j.beginRange--
102 j.inRange++
103 for k, value := range results {
104 j.parser.Root.Nodes = nodes[i+1:]
105 if k == len(results)-1 {
106 j.inRange--
107 }
108 nextResults, err := j.FindResults(value.Interface())
109 if err != nil {
110 return nil, err
111 }
112 fullResult = append(fullResult, nextResults...)
113 }
114 break
115 }
116 fullResult = append(fullResult, results)
117 }
118 return fullResult, nil
119}
120
121// PrintResults writes the results into writer
122func (j *JSONPath) PrintResults(wr io.Writer, results []reflect.Value) error {

Callers 1

ExecuteMethod · 0.95

Calls 2

walkMethod · 0.95
ErrorfMethod · 0.65

Tested by

no test coverage detected