diff options
Diffstat (limited to 'vendor/github.com/jmespath/go-jmespath/api.go')
-rw-r--r-- | vendor/github.com/jmespath/go-jmespath/api.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/vendor/github.com/jmespath/go-jmespath/api.go b/vendor/github.com/jmespath/go-jmespath/api.go new file mode 100644 index 0000000..9cfa988 --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/api.go | |||
@@ -0,0 +1,49 @@ | |||
1 | package jmespath | ||
2 | |||
3 | import "strconv" | ||
4 | |||
5 | // JmesPath is the epresentation of a compiled JMES path query. A JmesPath is | ||
6 | // safe for concurrent use by multiple goroutines. | ||
7 | type JMESPath struct { | ||
8 | ast ASTNode | ||
9 | intr *treeInterpreter | ||
10 | } | ||
11 | |||
12 | // Compile parses a JMESPath expression and returns, if successful, a JMESPath | ||
13 | // object that can be used to match against data. | ||
14 | func Compile(expression string) (*JMESPath, error) { | ||
15 | parser := NewParser() | ||
16 | ast, err := parser.Parse(expression) | ||
17 | if err != nil { | ||
18 | return nil, err | ||
19 | } | ||
20 | jmespath := &JMESPath{ast: ast, intr: newInterpreter()} | ||
21 | return jmespath, nil | ||
22 | } | ||
23 | |||
24 | // MustCompile is like Compile but panics if the expression cannot be parsed. | ||
25 | // It simplifies safe initialization of global variables holding compiled | ||
26 | // JMESPaths. | ||
27 | func MustCompile(expression string) *JMESPath { | ||
28 | jmespath, err := Compile(expression) | ||
29 | if err != nil { | ||
30 | panic(`jmespath: Compile(` + strconv.Quote(expression) + `): ` + err.Error()) | ||
31 | } | ||
32 | return jmespath | ||
33 | } | ||
34 | |||
35 | // Search evaluates a JMESPath expression against input data and returns the result. | ||
36 | func (jp *JMESPath) Search(data interface{}) (interface{}, error) { | ||
37 | return jp.intr.Execute(jp.ast, data) | ||
38 | } | ||
39 | |||
40 | // Search evaluates a JMESPath expression against input data and returns the result. | ||
41 | func Search(expression string, data interface{}) (interface{}, error) { | ||
42 | intr := newInterpreter() | ||
43 | parser := NewParser() | ||
44 | ast, err := parser.Parse(expression) | ||
45 | if err != nil { | ||
46 | return nil, err | ||
47 | } | ||
48 | return intr.Execute(ast, data) | ||
49 | } | ||