aboutsummaryrefslogtreecommitdiff
path: root/crates/libsyntax2/src/text_utils.rs
blob: e3d73888f4a1ee91d33d600f4ae593984793e1d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use {TextRange, TextUnit};

pub fn contains_offset_nonstrict(range: TextRange, offset: TextUnit) -> bool {
    range.start() <= offset && offset <= range.end()
}

pub fn is_subrange(range: TextRange, subrange: TextRange) -> bool {
    range.start() <= subrange.start() && subrange.end() <= range.end()
}

pub fn intersect(r1: TextRange, r2: TextRange) -> Option<TextRange> {
    let start = r1.start().max(r2.start());
    let end = r1.end().min(r2.end());
    if start <= end {
        Some(TextRange::from_to(start, end))
    } else {
        None
    }
}