(in io.RuneReader, stop map[rune]bool)
| 502 | } |
| 503 | |
| 504 | func runesUntil(in io.RuneReader, stop map[rune]bool) ([]rune, rune, error) { |
| 505 | v := []rune{} |
| 506 | for { |
| 507 | switch r, _, e := in.ReadRune(); { |
| 508 | case e != nil: |
| 509 | return v, r, e |
| 510 | case inMap(r, stop): |
| 511 | return v, r, nil |
| 512 | case r == '\\': |
| 513 | next, _, e := in.ReadRune() |
| 514 | if e != nil { |
| 515 | return v, next, e |
| 516 | } |
| 517 | v = append(v, next) |
| 518 | default: |
| 519 | v = append(v, r) |
| 520 | } |
| 521 | } |
| 522 | } |
| 523 | |
| 524 | func inMap(k rune, m map[rune]bool) bool { |
| 525 | _, ok := m[k] |