MCPcopy
hub / github.com/kubernetes/client-go / parseInsideAction

Method parseInsideAction

util/jsonpath/parser.go:148–183  ·  view source on GitHub ↗
(cur *ListNode)

Source from the content-addressed store, hash-verified

146}
147
148func (p *Parser) parseInsideAction(cur *ListNode) error {
149 prefixMap := map[string]func(*ListNode) error{
150 rightDelim: p.parseRightDelim,
151 "[?(": p.parseFilter,
152 "..": p.parseRecursive,
153 }
154 for prefix, parseFunc := range prefixMap {
155 if strings.HasPrefix(p.input[p.pos:], prefix) {
156 return parseFunc(cur)
157 }
158 }
159
160 switch r := p.next(); {
161 case r == eof || isEndOfLine(r):
162 return fmt.Errorf("unclosed action")
163 case r == ' ':
164 p.consumeText()
165 case r == '@' || r == '$': //the current object, just pass it
166 p.consumeText()
167 case r == '[':
168 return p.parseArray(cur)
169 case r == '"' || r == '\'':
170 return p.parseQuote(cur, r)
171 case r == '.':
172 return p.parseField(cur)
173 case r == '+' || r == '-' || unicode.IsDigit(r):
174 p.backup()
175 return p.parseNumber(cur)
176 case isAlphaNumeric(r):
177 p.backup()
178 return p.parseIdentifier(cur)
179 default:
180 return fmt.Errorf("unrecognized character in action: %#U", r)
181 }
182 return p.parseInsideAction(cur)
183}
184
185// parseRightDelim scans the right delimiter, which is known to be present.
186func (p *Parser) parseRightDelim(cur *ListNode) error {

Callers 8

parseLeftDelimMethod · 0.95
parseIdentifierMethod · 0.95
parseRecursiveMethod · 0.95
parseNumberMethod · 0.95
parseArrayMethod · 0.95
parseFilterMethod · 0.95
parseQuoteMethod · 0.95
parseFieldMethod · 0.95

Calls 11

nextMethod · 0.95
consumeTextMethod · 0.95
parseArrayMethod · 0.95
parseQuoteMethod · 0.95
parseFieldMethod · 0.95
backupMethod · 0.95
parseNumberMethod · 0.95
parseIdentifierMethod · 0.95
isEndOfLineFunction · 0.85
isAlphaNumericFunction · 0.85
ErrorfMethod · 0.65

Tested by

no test coverage detected