pub(super) fn find_sub_close(body: &str) -> Option<usize> {
let b = body.as_bytes();
let mut i = 0;
let mut depth: usize = 0;
while i < b.len() {
match b[i] {
b'\\' => i += 1, b'\'' => {
i += 1;
while i < b.len() && b[i] != b'\'' {
i += 1;
}
if i >= b.len() {
return None;
}
}
b'"' => {
i += 1;
while i < b.len() && b[i] != b'"' {
i += if b[i] == b'\\' { 2 } else { 1 };
}
if i >= b.len() {
return None;
}
}
b'`' => {
i += 1;
while i < b.len() && b[i] != b'`' {
i += if b[i] == b'\\' { 2 } else { 1 };
}
if i >= b.len() {
return None;
}
}
b'(' => depth += 1,
b')' => {
if depth == 0 {
return Some(i);
}
depth -= 1;
}
_ => {}
}
i += 1;
}
None
}