eat trailing percent signs in numbers

This commit is contained in:
Ian Wrzesinski 2025-02-27 10:50:49 -05:00
parent 966ca4f0b4
commit a2675be494
4 changed files with 9 additions and 11 deletions

View File

@ -846,14 +846,8 @@ impl Lexer<'_> {
} }
} }
// Read the suffix. let number = self.s.from(start);
let suffix_start = self.s.cursor(); let suffix = self.s.eat_while(|c: char| c.is_ascii_alphanumeric() || c == '%');
if !self.s.eat_if('%') {
self.s.eat_while(char::is_ascii_alphanumeric);
}
let number = self.s.get(start..suffix_start);
let suffix = self.s.from(suffix_start);
let mut suffix_result = match suffix { let mut suffix_result = match suffix {
"" => Ok(None), "" => Ok(None),

Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 B

View File

@ -107,7 +107,10 @@
#1.2e-0% #1.2e-0%
#0.0e0deg #0.0e0deg
#0.% #0.%
// Error: 2-6 invalid number suffix: in%
#5in% #5in%
// Error: 2-6 invalid number suffix: %in
#5%in
// Error: 2-8 invalid number suffix: hello // Error: 2-8 invalid number suffix: hello
#1hello #1hello
// Error: 2-7 invalid number suffix: infr // Error: 2-7 invalid number suffix: infr

View File

@ -6,10 +6,11 @@
#test((100% + 2pt - 2pt).length, 0pt) #test((100% + 2pt - 2pt).length, 0pt)
#test((56% + 2pt - 56%).ratio, 0%) #test((56% + 2pt - 56%).ratio, 0%)
--- double-percent --- --- double-percent-embedded ---
// Test for two percent signs in a row. // Test for two percent signs in a row.
// Error: 2-7 invalid number suffix: %%
#3.1%% #3.1%%
--- double-percent-error --- --- double-percent-parens ---
// Error: 7-8 the character `%` is not valid in code // Error: 3-8 invalid number suffix: %%
#(3.1%%) #(3.1%%)