parseColonSlash extract :/ statements
()
| 469 | |
| 470 | // parseColonSlash extract :/<data> statements |
| 471 | func (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 |
| 515 | func (p *Parser) parseColonDefault() (Revisioner, error) { |
no test coverage detected