diff options
Diffstat (limited to 'model/query.go')
-rw-r--r-- | model/query.go | 33 |
1 files changed, 0 insertions, 33 deletions
diff --git a/model/query.go b/model/query.go deleted file mode 100644 index 56a0dfe..0000000 --- a/model/query.go +++ /dev/null @@ -1,33 +0,0 @@ -package model - -import ( - "fmt" - "strconv" -) - -// Query returns node by array query -func Query(n Node, query []string) (Node, error) { - if len(query) == 0 { - return n, nil - } - head, rest := query[0], query[1:] - switch n := n.(type) { - case *ArrayNode: - idx, err := strconv.Atoi(head) - if err != nil { - return nil, fmt.Errorf("index must be a number, got %s", head) - } - next, err := n.Index(idx) - if err != nil { - return nil, err - } - return Query(next, rest) - case *ObjectNode: - next, err := n.Get(head) - if err != nil { - return nil, err - } - return Query(next, rest) - } - return nil, fmt.Errorf("can't get %s from node type %s", head, n.Type()) -} |