Add SourceMap::indentation_before.
This commit is contained in:
parent
d914f17ca7
commit
483cff7ed3
1 changed files with 12 additions and 7 deletions
|
@ -593,14 +593,19 @@ impl SourceMap {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn span_to_margin(&self, sp: Span) -> Option<usize> {
|
pub fn span_to_margin(&self, sp: Span) -> Option<usize> {
|
||||||
match self.span_to_prev_source(sp) {
|
Some(self.indentation_before(sp)?.len())
|
||||||
Err(_) => None,
|
}
|
||||||
Ok(source) => {
|
|
||||||
let last_line = source.rsplit_once('\n').unwrap_or(("", &source)).1;
|
|
||||||
|
|
||||||
Some(last_line.len() - last_line.trim_start().len())
|
pub fn indentation_before(&self, sp: Span) -> Option<String> {
|
||||||
}
|
self.span_to_source(sp, |src, start_index, _| {
|
||||||
}
|
let before = &src[..start_index];
|
||||||
|
let last_line = before.rsplit_once('\n').map_or(before, |(_, last)| last);
|
||||||
|
Ok(last_line
|
||||||
|
.split_once(|c: char| !c.is_whitespace())
|
||||||
|
.map_or(last_line, |(indent, _)| indent)
|
||||||
|
.to_string())
|
||||||
|
})
|
||||||
|
.ok()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the source snippet as `String` before the given `Span`.
|
/// Returns the source snippet as `String` before the given `Span`.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue