(in io.RuneReader, stop map[rune]bool)
| 426 | } |
| 427 | |
| 428 | func runesUntil(in io.RuneReader, stop map[rune]bool) ([]rune, rune, error) { |
| 429 | v := []rune{} |
| 430 | for { |
| 431 | switch r, _, e := in.ReadRune(); { |
| 432 | case e != nil: |
| 433 | return v, r, e |
| 434 | case inMap(r, stop): |
| 435 | return v, r, nil |
| 436 | case r == '\\': |
| 437 | next, _, e := in.ReadRune() |
| 438 | if e != nil { |
| 439 | return v, next, e |
| 440 | } |
| 441 | v = append(v, next) |
| 442 | default: |
| 443 | v = append(v, r) |
| 444 | } |
| 445 | } |
| 446 | } |
| 447 | |
| 448 | func inMap(k rune, m map[rune]bool) bool { |
| 449 | _, ok := m[k] |