MCPcopy Index your code
hub / github.com/go-git/go-git / parseCaret

Method parseCaret

internal/revision/parser.go:358–390  ·  view source on GitHub ↗

parseCaret extract ^ statements

()

Source from the content-addressed store, hash-verified

356
357// parseCaret extract ^ statements
358func (p *Parser) parseCaret() (Revisioner, error) {
359 var tok token
360 var lit string
361 var err error
362
363 tok, lit, err = p.scan()
364
365 if err != nil {
366 return nil, err
367 }
368
369 switch {
370 case tok == obrace:
371 r, err := p.parseCaretBraces()
372
373 if err != nil {
374 return nil, err
375 }
376
377 return r, nil
378 case tok == number:
379 n, _ := strconv.Atoi(lit)
380
381 if n > 2 {
382 return nil, &ErrInvalidRevision{fmt.Sprintf(`"%s" found must be 0, 1 or 2 after "^"`, lit)}
383 }
384
385 return CaretPath{n}, nil
386 default:
387 p.unscan()
388 return CaretPath{1}, nil
389 }
390}
391
392// parseCaretBraces extract ^{<data>} statements
393func (p *Parser) parseCaretBraces() (Revisioner, error) {

Callers 3

ParseMethod · 0.95

Calls 3

scanMethod · 0.95
parseCaretBracesMethod · 0.95
unscanMethod · 0.95