1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
macro_rules! one_arg { ($name:ident) => { (stringify!($name).into(), $crate::sass::Value::Null) }; ($name:ident = $value:expr) => {{ use $crate::parser::value::value_expression; ( stringify!($name).into(), value_expression($value).unwrap().1, ) }}; } macro_rules! func { (( $($arg:ident $( = $value:expr )* ),* ), $body:expr) => {{ use std::sync::Arc; SassFunction::builtin(vec![ $( one_arg!($arg $( = $value)* ) ),* ], false, Arc::new($body)) }}; } macro_rules! func_va { (( $($arg:ident $( = $value:expr )* ),* ), $body:expr) => {{ use std::sync::Arc; SassFunction::builtin(vec![ $( one_arg!($arg $( = $value)* ) ),* ], true, Arc::new($body)) }}; } macro_rules! def { ($f:expr, $name:ident( $($arg:ident$(=$val:expr)* ),* ), $body:expr) => { $f.insert( stringify!($name), func!(($($arg $( = $val )* ),*), $body), ) } } macro_rules! def_va { ($f:expr, $name:ident( $($arg:ident$(=$value:expr)* ),*), $body:expr) => { $f.insert(stringify!($name), func_va!(($($arg $( = $value )* ),*), $body)) } } macro_rules! func2 { ($name:ident( $($arg:ident $( = $value:expr )* ),* )) => { func!(($($arg $( = $value )* ),*), |s: &dyn Scope| $name($(s.get(stringify!($arg))?),*)) }; } macro_rules! dep_warn { ($first: expr, $($arg:expr),*) => {{ use std::sync::Once; static WARN: Once = Once::new(); WARN.call_once(|| { eprintln!(concat!("DEPRECATION WARNING: ", $first), $($arg),*); }); }}; ($first: expr) => {{ use std::sync::Once; static WARN: Once = Once::new(); WARN.call_once(|| eprintln!(concat!("DEPRECATION WARNING: ", $first))); }} }