in src/models/matches.rs [143:172]
fn find_empty_line_range(&self, code: &str, node: &Node) -> Option<std::ops::Range<usize>> {
let mut end_byte = node.start_byte();
let code_bytes = code.as_bytes();
let mut found = false;
while end_byte > 0 {
let prev_char = code_bytes[end_byte - 1] as char;
if prev_char.is_whitespace() {
end_byte -= 1;
if prev_char == '\n' {
found = true;
break;
}
} else {
break;
}
}
if found {
// Get the previous sibling node's end byte if it exists, in order to prevent overdeletions
let prev_sibling_end_byte = if let Some(prev_sibling) = node.prev_sibling() {
prev_sibling.end_byte()
} else {
0
};
let max_end_byte = std::cmp::max(end_byte, prev_sibling_end_byte);
Some(max_end_byte..node.start_byte())
} else {
None
}
}