walk visits tree rooted at the given node in DFS order
(value []reflect.Value, node Node)
| 137 | |
| 138 | // walk visits tree rooted at the given node in DFS order |
| 139 | func (j *JSONPath) walk(value []reflect.Value, node Node) ([]reflect.Value, error) { |
| 140 | switch node := node.(type) { |
| 141 | case *ListNode: |
| 142 | return j.evalList(value, node) |
| 143 | case *TextNode: |
| 144 | return []reflect.Value{reflect.ValueOf(node.Text)}, nil |
| 145 | case *FieldNode: |
| 146 | return j.evalField(value, node) |
| 147 | case *ArrayNode: |
| 148 | return j.evalArray(value, node) |
| 149 | case *FilterNode: |
| 150 | return j.evalFilter(value, node) |
| 151 | case *IntNode: |
| 152 | return j.evalInt(value, node) |
| 153 | case *BoolNode: |
| 154 | return j.evalBool(value, node) |
| 155 | case *FloatNode: |
| 156 | return j.evalFloat(value, node) |
| 157 | case *WildcardNode: |
| 158 | return j.evalWildcard(value, node) |
| 159 | case *RecursiveNode: |
| 160 | return j.evalRecursive(value, node) |
| 161 | case *UnionNode: |
| 162 | return j.evalUnion(value, node) |
| 163 | case *IdentifierNode: |
| 164 | return j.evalIdentifier(value, node) |
| 165 | default: |
| 166 | return value, fmt.Errorf("unexpected Node %v", node) |
| 167 | } |
| 168 | } |
| 169 | |
| 170 | // evalInt evaluates IntNode |
| 171 | func (j *JSONPath) evalInt(input []reflect.Value, node *IntNode) ([]reflect.Value, error) { |
no test coverage detected