use std::collections::HashMap;
use crate::ast::Ruleset::{self};
use crate::ast::*;
pub fn apply_var<'a>(tree: &mut Tree<'a>) {
let mut mixins: HashMap<&'a str, &'a str> = HashMap::new();
tree.transform(|ruleset| {
if let Ruleset::QualRule(QualRule(name, Some(val))) = ruleset {
if let Some(val) = val.strip_prefix(':') {
mixins.insert(name, val);
}
}
});
let mut mixins = mixins.iter().collect::<Vec<_>>();
mixins.sort_by(|(x, _), (a, _)| x.len().cmp(&a.len()));
mixins.reverse();
tree.transform(|rule: &mut Rule| {
for (var, val) in mixins.iter() {
rule.value = rule.value.replace(&format!("@{}", var), val).into();
}
});
}