(a: CharRangeRepr, b: CharRangeRepr)
| 554 | } |
| 555 | |
| 556 | export function intersect(a: CharRangeRepr, b: CharRangeRepr): Maybe<CharRangeRepr> { |
| 557 | let a1 = begin(a); |
| 558 | let a2 = end(a); |
| 559 | let b1 = begin(b); |
| 560 | let b2 = end(b); |
| 561 | if (b2 < a1 || a2 < b1) return; |
| 562 | if (a1 <= b1) { |
| 563 | if (b2 <= a2) return b; |
| 564 | else return pack(b1, a2); |
| 565 | } else { |
| 566 | if (a2 <= b2) return a; |
| 567 | else return pack(a1, b2); |
| 568 | } |
| 569 | } |
| 570 | |
| 571 | export function join(a: CharRangeRepr, b: CharRangeRepr): Maybe<CharRangeRepr> { |
| 572 | let a1 = begin(a); |