From eaa21fd3939cc47a4f7156b576d102d4387c98a8 Mon Sep 17 00:00:00 2001 From: Noah Hellman Date: Sat, 13 May 2023 12:41:21 +0200 Subject: [PATCH] prepass: consider only ascii whitespace --- src/lib.rs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 1c2620e..1df0737 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -629,13 +629,25 @@ impl<'s> PrePass<'s> { let url = if !next_is_inline(&mut blocks) { "".into() } else { - let start = blocks.next().unwrap().span.of(src).trim(); + let start = blocks + .next() + .unwrap() + .span + .of(src) + .trim_matches(|c: char| c.is_ascii_whitespace()); if !next_is_inline(&mut blocks) { start.into() } else { let mut url = start.to_string(); while next_is_inline(&mut blocks) { - url.push_str(blocks.next().unwrap().span.of(src).trim()); + url.push_str( + blocks + .next() + .unwrap() + .span + .of(src) + .trim_matches(|c: char| c.is_ascii_whitespace()), + ); } url.into() } @@ -677,8 +689,11 @@ impl<'s> PrePass<'s> { text.push_str(ev.span.of(src)); let mut chars = ev.span.of(src).chars().peekable(); while let Some(c) = chars.next() { - if c.is_whitespace() { - while chars.peek().map_or(false, |c| c.is_whitespace()) { + if c.is_ascii_whitespace() { + while chars + .peek() + .map_or(false, |c| c.is_ascii_whitespace()) + { chars.next(); } if !last_whitespace {