Skip to content

Commit 099d13b

Browse files
authored
Merge pull request #692 from liamwhite/find-special
Clean up find_special_char logic for inlines
2 parents 6337099 + 19d301e commit 099d13b

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

src/parser/inlines.rs

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1908,21 +1908,29 @@ impl<'a, 'r, 'o, 'd, 'c, 'p> Subject<'a, 'r, 'o, 'd, 'c, 'p> {
19081908
}
19091909

19101910
fn find_special_char(&self) -> usize {
1911-
for n in self.scanner.pos..self.input.len() {
1912-
if self.special_char_bytes[self.input.as_bytes()[n] as usize] {
1913-
if self.input.as_bytes()[n] == b'^' && self.within_brackets {
1914-
// NO OP
1915-
} else {
1916-
return n;
1917-
}
1918-
}
1919-
if self.options.parse.smart && self.smart_char_bytes[self.input.as_bytes()[n] as usize]
1920-
{
1921-
return n;
1922-
}
1911+
let input = &self.input.as_bytes()[self.scanner.pos..];
1912+
let index = input
1913+
.iter()
1914+
.position(|&value| self.is_special_char(value))
1915+
.unwrap_or(input.len());
1916+
1917+
self.scanner.pos + index
1918+
}
1919+
1920+
fn is_special_char(&self, value: u8) -> bool {
1921+
if value == b'^' && self.within_brackets {
1922+
return false;
1923+
}
1924+
1925+
if self.special_char_bytes[value as usize] {
1926+
return true;
1927+
}
1928+
1929+
if self.options.parse.smart && self.smart_char_bytes[value as usize] {
1930+
return true;
19231931
}
19241932

1925-
self.input.len()
1933+
false
19261934
}
19271935

19281936
fn scan_to_closing_backtick(&mut self, openticklength: usize) -> Option<usize> {

0 commit comments

Comments
 (0)