From 15f657df6d069a717ac9f0464251c778ef67c750 Mon Sep 17 00:00:00 2001 From: Connor Skees Date: Sun, 26 Jul 2020 00:10:55 -0400 Subject: [PATCH] implement builtin `sass:math` variables --- src/builtin/modules/math.rs | 12 +++++++++++- src/builtin/modules/mod.rs | 4 ++++ src/parse/value/parse.rs | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/builtin/modules/math.rs b/src/builtin/modules/math.rs index e3d1421..36f8019 100644 --- a/src/builtin/modules/math.rs +++ b/src/builtin/modules/math.rs @@ -7,7 +7,8 @@ use crate::{ }, error::SassResult, parse::Parser, - value::Value, + unit::Unit, + value::{Number, Value}, }; #[cfg(feature = "random")] @@ -85,4 +86,13 @@ pub(crate) fn declare(f: &mut Module) { f.insert_builtin("percentage", percentage); #[cfg(feature = "random")] f.insert_builtin("random", random); + + f.insert_builtin_var( + "pi", + Value::Dimension(Number::from(std::f64::consts::PI), Unit::None, true), + ); + f.insert_builtin_var( + "e", + Value::Dimension(Number::from(std::f64::consts::E), Unit::None, true), + ); } diff --git a/src/builtin/modules/mod.rs b/src/builtin/modules/mod.rs index e527df6..45bd3ca 100644 --- a/src/builtin/modules/mod.rs +++ b/src/builtin/modules/mod.rs @@ -37,6 +37,10 @@ impl Module { } } + pub fn insert_builtin_var(&mut self, name: &'static str, value: Value) { + self.vars.insert(name.into(), value); + } + pub fn get_fn(&self, name: Identifier) -> Option { self.functions.get(&name).cloned() } diff --git a/src/parse/value/parse.rs b/src/parse/value/parse.rs index 179e609..449a1d6 100644 --- a/src/parse/value/parse.rs +++ b/src/parse/value/parse.rs @@ -214,6 +214,7 @@ impl<'a> Parser<'a> { ) -> SassResult> { Ok(IntermediateValue::Value( if matches!(self.toks.peek(), Some(Token { kind: '$', .. })) { + self.toks.next(); let var = self .parse_identifier_no_interpolation(false)? .map_node(|i| i.into());