MCPcopy Create free account
hub / github.com/PaesslerAG/jsonpath / parseBracket

Method parseBracket

parse.go:98–152  ·  view source on GitHub ↗
(c context.Context)

Source from the content-addressed store, hash-verified

96}
97
98func (p *parser) parseBracket(c context.Context) (keys []gval.Evaluable, seperator rune, err error) {
99 for {
100 scan := p.Scan()
101 skipScan := false
102 switch scan {
103 case '?':
104 skipScan = true
105 case ':':
106 i := float64(0)
107 if len(keys) == 1 {
108 i = math.MaxInt32
109 }
110 keys = append(keys, p.Const(i))
111 skipScan = true
112 case '*':
113 if p.Scan() != ']' {
114 return nil, 0, p.Expected("JSON bracket star", ']')
115 }
116 return []gval.Evaluable{}, 0, nil
117 case ']':
118 if seperator == ':' {
119 skipScan = true
120 break
121 }
122 fallthrough
123 default:
124 p.Camouflage("jsonpath brackets")
125 key, err := p.ParseExpression(c)
126 if err != nil {
127 return nil, 0, err
128 }
129 keys = append(keys, key)
130 }
131 if !skipScan {
132 scan = p.Scan()
133 }
134 if seperator == 0 {
135 seperator = scan
136 }
137 switch scan {
138 case ':', ',':
139 case ']':
140 return
141 case '?':
142 if len(keys) != 0 {
143 return nil, 0, p.Expected("JSON filter", ']')
144 }
145 default:
146 return nil, 0, p.Expected("JSON bracket separator", ':', ',')
147 }
148 if seperator != scan {
149 return nil, 0, fmt.Errorf("mixed %v and %v in JSON bracket", seperator, scan)
150 }
151 }
152}
153
154func (p *parser) parseMapper(c context.Context) error {
155 scan := p.Scan()

Callers 2

parsePathMethod · 0.95
parseMapperMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected