...
1
2
3
4
5
6
7
8
9
10
11
12 package jsonpath
13
14 import (
15 "context"
16
17 "github.com/PaesslerAG/gval"
18 )
19
20
21 func New(path string) (gval.Evaluable, error) {
22 return lang.NewEvaluable(path)
23 }
24
25
26 func Get(path string, value interface{}) (interface{}, error) {
27 eval, err := lang.NewEvaluable(path)
28 if err != nil {
29 return nil, err
30 }
31 return eval(context.Background(), value)
32 }
33
34 var lang = gval.NewLanguage(
35 gval.Base(),
36 gval.PrefixExtension('$', parseRootPath),
37 gval.PrefixExtension('@', parseCurrentPath),
38 )
39
40
41 func Language() gval.Language {
42 return lang
43 }
44
45 var placeholderExtension = gval.NewLanguage(
46 lang,
47 gval.PrefixExtension('{', parseJSONObject),
48 gval.PrefixExtension('#', parsePlaceholder),
49 )
50
51
52 func PlaceholderExtension() gval.Language {
53 return placeholderExtension
54 }
55
View as plain text