#[cfg(feature = "css")]
use std::str::from_utf8;
#[cfg(feature = "css")]
use lightningcss::stylesheet::{MinifyOptions, ParserOptions, PrinterOptions, StyleSheet};
use crate::whitespace::trimmed;
#[cfg(not(feature = "css"))]
pub fn minify_css(out: &mut Vec<u8>, code: &[u8]) {
out.extend_from_slice(trimmed(code));
}
#[cfg(feature = "css")]
pub fn minify_css(out: &mut Vec<u8>, code: &[u8]) {
let popt = PrinterOptions {
minify: true,
..Default::default()
};
let result = match StyleSheet::parse(
from_utf8(code).expect("<style> content contains non-UTF-8"),
ParserOptions::default(),
) {
Ok(mut sty) => match sty.minify(MinifyOptions::default()) {
Ok(()) => match sty.to_css(popt) {
Ok(out) => Some(out.code),
Err(_err) => None,
},
Err(_err) => None,
},
Err(_err) => None,
};
if let Some(min) = result {
if min.len() < code.len() {
out.extend_from_slice(min.as_bytes());
return;
};
};
out.extend_from_slice(trimmed(code));
}