MCPcopy
hub / github.com/go-git/go-git / parseColonSlash

Method parseColonSlash

internal/revision/parser.go:471–512  ·  view source on GitHub ↗

parseColonSlash extract :/ statements

()

Source from the content-addressed store, hash-verified

469
470// parseColonSlash extract :/<data> statements
471func (p *Parser) parseColonSlash() (Revisioner, error) {
472 var tok, nextTok token
473 var lit string
474 var re string
475 var negate bool
476 var err error
477
478 for {
479 tok, lit, err = p.scan()
480
481 if err != nil {
482 return nil, err
483 }
484
485 nextTok, _, err = p.scan()
486
487 if err != nil {
488 return nil, err
489 }
490
491 switch {
492 case tok == emark && nextTok == emark:
493 re += lit
494 case re == "" && tok == emark && nextTok == minus:
495 negate = true
496 case re == "" && tok == emark:
497 return nil, &ErrInvalidRevision{s: `revision suffix brace component sequences starting with "/!" others than those defined are reserved`}
498 case tok == eof:
499 p.unscan()
500 reg, err := regexp.Compile(re)
501
502 if err != nil {
503 return ColonReg{}, &ErrInvalidRevision{fmt.Sprintf(`revision suffix brace component, %s`, err.Error())}
504 }
505
506 return ColonReg{reg, negate}, nil
507 default:
508 p.unscan()
509 re += lit
510 }
511 }
512}
513
514// parseColonDefault extract :<data> statements
515func (p *Parser) parseColonDefault() (Revisioner, error) {

Callers 1

parseColonMethod · 0.95

Calls 3

scanMethod · 0.95
unscanMethod · 0.95
ErrorMethod · 0.45

Tested by

no test coverage detected