MCPcopy Index your code
hub / github.com/PaesslerAG/jsonpath / parseMapper

Method parseMapper

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

Source from the content-addressed store, hash-verified

152}
153
154func (p *parser) parseMapper(c context.Context) error {
155 scan := p.Scan()
156 switch scan {
157 case scanner.Ident:
158 p.appendPlainSelector(directSelector(p.Const(p.TokenText())))
159 case '[':
160 keys, seperator, err := p.parseBracket(c)
161
162 if err != nil {
163 return err
164 }
165 switch seperator {
166 case ':':
167 return fmt.Errorf("mapper can not be combined with range query")
168 case '?':
169 if len(keys) != 1 {
170 return fmt.Errorf("filter needs exactly one key")
171 }
172 p.appendAmbiguousSelector(filterSelector(keys[0]))
173 default:
174 p.appendAmbiguousSelector(multiSelector(keys))
175 }
176 case '*':
177 p.appendAmbiguousSelector(starSelector())
178 case '(':
179 return p.parseScript(c)
180 default:
181 return p.Expected("JSON mapper", '[', scanner.Ident, '*')
182 }
183 return p.parsePath(c)
184}
185
186func (p *parser) parseScript(c context.Context) error {
187 script, err := p.ParseExpression(c)

Callers 1

parseSelectMethod · 0.95

Calls 9

appendPlainSelectorMethod · 0.95
parseBracketMethod · 0.95
parseScriptMethod · 0.95
parsePathMethod · 0.95
directSelectorFunction · 0.85
filterSelectorFunction · 0.85
multiSelectorFunction · 0.85
starSelectorFunction · 0.85

Tested by

no test coverage detected