Skip to content

Commit 4355c2e

Browse files
committed
tokenizer: treat zwsp as whitespace
1 parent 5eb4e0e commit 4355c2e

1 file changed

Lines changed: 8 additions & 1 deletion

File tree

src/tokenizer.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,13 @@ pub enum Whitespace {
239239
Space,
240240
Newline,
241241
Tab,
242-
SingleLineComment { comment: String, prefix: String },
242+
SingleLineComment {
243+
comment: String,
244+
prefix: String,
245+
},
243246
MultiLineComment(String),
247+
/// https://en.wikipedia.org/wiki/Zero-width_space
248+
Zwsp,
244249
}
245250

246251
impl fmt::Display for Whitespace {
@@ -251,6 +256,7 @@ impl fmt::Display for Whitespace {
251256
Whitespace::Tab => f.write_str("\t"),
252257
Whitespace::SingleLineComment { prefix, comment } => write!(f, "{}{}", prefix, comment),
253258
Whitespace::MultiLineComment(s) => write!(f, "/*{}*/", s),
259+
Whitespace::Zwsp => write!(f, "\u{feff}"),
254260
}
255261
}
256262
}
@@ -314,6 +320,7 @@ impl<'a> Tokenizer<'a> {
314320
match chars.peek() {
315321
Some(&ch) => match ch {
316322
' ' => self.consume_and_return(chars, Token::Whitespace(Whitespace::Space)),
323+
'\u{feff}' => self.consume_and_return(chars, Token::Whitespace(Whitespace::Zwsp)),
317324
'\t' => self.consume_and_return(chars, Token::Whitespace(Whitespace::Tab)),
318325
'\n' => self.consume_and_return(chars, Token::Whitespace(Whitespace::Newline)),
319326
'\r' => {

0 commit comments

Comments
 (0)