fn find_empty_line_range()

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
    }
  }