use super::rules::RuleSet;
use super::values::format_value;
use crate::Options;
use crate::resolve::{VarKind, VarTable};
use std::fmt::Write;
pub fn emit(out: &mut String, vars: &VarTable, rules: &RuleSet, opts: &Options) {
out.push_str(" <style>\n");
if !opts.bake_vars {
let mut names: Vec<&String> = vars
.entries
.iter()
.filter(|(_, e)| e.kind == VarKind::Visual)
.map(|(n, _)| n)
.collect();
names.sort();
if !names.is_empty() {
out.push_str(" @layer lini.defaults { :root, .lini {");
for (i, name) in names.iter().enumerate() {
let entry = vars.entries.get(*name).unwrap();
if i > 0 {
out.push(' ');
}
write!(
out,
" --lini-{}: {};",
name,
format_value(&entry.value, vars, opts)
)
.unwrap();
}
out.push_str(" } }\n");
}
}
rules.emit(out);
out.push_str(" </style>\n");
}