summaryrefslogtreecommitdiff
path: root/src/syntax/parsing.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/syntax/parsing.rs')
-rw-r--r--src/syntax/parsing.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/syntax/parsing.rs b/src/syntax/parsing.rs
index d887d898..41a8728b 100644
--- a/src/syntax/parsing.rs
+++ b/src/syntax/parsing.rs
@@ -250,7 +250,16 @@ impl<'s> Parser<'s> {
} else if let Ok(size) = text.parse::<Size>() {
Expression::Size(size)
} else {
- Expression::Ident(Ident::new(text.to_string())?)
+ // This loop does not actually loop, but is used for breaking.
+ loop {
+ if text.ends_with('%') {
+ if let Ok(percent) = text[..text.len() - 1].parse::<f64>() {
+ break Expression::Num(percent / 100.0);
+ }
+ }
+
+ break Expression::Ident(Ident::new(text.to_string())?);
+ }
}
}
_ => error!("expected expression"),