MCPcopy
hub / github.com/perkeep/perkeep / parseAtom

Method parseAtom

pkg/search/expr.go:295–325  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

293}
294
295func (p *parser) parseAtom() (*Constraint, error) {
296 a, start, err := p.atomWords()
297 if err != nil {
298 return nil, err
299 }
300 faultToken := func() token {
301 return token{
302 typ: tokenError,
303 val: a.String(),
304 start: start,
305 }
306 }
307 var c *Constraint
308 for _, k := range keywords {
309 matched, err := k.Match(a)
310 if err != nil {
311 return nil, newParseExpError(err.Error(), faultToken())
312 }
313 if matched {
314 c, err = k.Predicate(p.ctx, a.args)
315 if err != nil {
316 return nil, newParseExpError(err.Error(), faultToken())
317 }
318 return c, nil
319 }
320 }
321 t := faultToken()
322 err = newParseExpError(fmt.Sprintf("Unknown search predicate: %q", t.val), t)
323 log.Printf("parsing search expression atom: %v", err)
324 return nil, err
325}
326
327func parseExpression(ctx context.Context, exp string) (*SearchQuery, error) {
328 base := &Constraint{

Callers 1

parseOperandMethod · 0.95

Calls 7

atomWordsMethod · 0.95
newParseExpErrorFunction · 0.85
PrintfMethod · 0.80
MatchMethod · 0.65
PredicateMethod · 0.65
StringMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected