use super::prelude::*;
use lightningcss::stylesheet::{ParserOptions, PrinterOptions, StyleSheet};
pub fn render_style(ctx: &mut HtmlContext, input_css: &str) {
let minify = ctx.settings().minify_css;
let parser_options = ParserOptions {
error_recovery: true,
..Default::default()
};
let print_options = PrinterOptions {
minify,
..Default::default()
};
debug!("Parsing input CSS ({} bytes)", input_css.len());
let stylesheet = StyleSheet::parse(input_css, parser_options)
.expect("Produced error with recovery enabled");
trace!("Rendering CSS into HTML (minify: {minify})");
let output_css = match stylesheet.to_css(print_options) {
Ok(output) => output.code,
Err(error) => {
error!("Problem outputting CSS from stylesheet: {error}");
trace!("Input CSS:\n{input_css}");
trace!("Parsed stylesheet:\n{stylesheet:#?}");
return;
}
};
ctx.html().style().inner(|ctx| {
ctx.push_raw_str(&output_css);
});
}