prepass: consider only ascii whitespace

This commit is contained in:
Noah Hellman 2023-05-13 12:41:21 +02:00
parent 72a3378831
commit eaa21fd393

View file

@ -629,13 +629,25 @@ impl<'s> PrePass<'s> {
let url = if !next_is_inline(&mut blocks) { let url = if !next_is_inline(&mut blocks) {
"".into() "".into()
} else { } 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) { if !next_is_inline(&mut blocks) {
start.into() start.into()
} else { } else {
let mut url = start.to_string(); let mut url = start.to_string();
while next_is_inline(&mut blocks) { 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() url.into()
} }
@ -677,8 +689,11 @@ impl<'s> PrePass<'s> {
text.push_str(ev.span.of(src)); text.push_str(ev.span.of(src));
let mut chars = ev.span.of(src).chars().peekable(); let mut chars = ev.span.of(src).chars().peekable();
while let Some(c) = chars.next() { while let Some(c) = chars.next() {
if c.is_whitespace() { if c.is_ascii_whitespace() {
while chars.peek().map_or(false, |c| c.is_whitespace()) { while chars
.peek()
.map_or(false, |c| c.is_ascii_whitespace())
{
chars.next(); chars.next();
} }
if !last_whitespace { if !last_whitespace {