| 654 | @see `Charset.fromPattern` |
| 655 | */ |
| 656 | export function toPattern(range: CharRangeRepr): string { |
| 657 | let r1 = begin(range); |
| 658 | let r2 = end(range); |
| 659 | if (r1 === r2) return toChar(r1); |
| 660 | if (r1 + 1 === r2) return toChar(r1) + toChar(r2); |
| 661 | return toChar(r1) + '-' + toChar(r2); |
| 662 | |
| 663 | function toChar(cp: number): string { |
| 664 | if (cp === _escapeCodePoint || cp === _excludeSignCodePoint || cp === _hyphenCodePoint) { |
| 665 | return '\\' + chr(cp); |
| 666 | } else { |
| 667 | return chr(cp); |
| 668 | } |
| 669 | } |
| 670 | } |
| 671 | |
| 672 | export function toCodePoints(range: CharRangeRepr, maxCount = Infinity): number[] { |
| 673 | let r1 = begin(range); |