ScanBareIdent reads bare identifier from a rune reader.
(r io.RuneScanner)
| 555 | |
| 556 | // ScanBareIdent reads bare identifier from a rune reader. |
| 557 | func ScanBareIdent(r io.RuneScanner) string { |
| 558 | // Read every ident character into the buffer. |
| 559 | // Non-ident characters and EOF will cause the loop to exit. |
| 560 | var buf bytes.Buffer |
| 561 | for { |
| 562 | ch, _, err := r.ReadRune() |
| 563 | if err != nil { |
| 564 | break |
| 565 | } else if !isIdentChar(ch) { |
| 566 | r.UnreadRune() |
| 567 | break |
| 568 | } else { |
| 569 | _, _ = buf.WriteRune(ch) |
| 570 | } |
| 571 | } |
| 572 | return buf.String() |
| 573 | } |
no test coverage detected