minify-html/rust/main/src/minify/css.rs

32 lines
984 B
Rust
Raw Normal View History

2022-06-21 03:29:12 -04:00
use std::str::from_utf8_unchecked;
2021-08-06 02:17:45 -04:00
use crate::cfg::Cfg;
2021-08-10 03:35:14 -04:00
use crate::common::whitespace::trimmed;
2022-06-21 03:29:12 -04:00
use css_minify::optimizations::{Level, Minifier};
2021-08-06 02:17:45 -04:00
pub fn minify_css(cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
2022-06-21 03:29:12 -04:00
if cfg.minify_css {
let result = Minifier::default().minify(
unsafe { from_utf8_unchecked(code) },
if cfg.minify_css_level_1 {
Level::One
} else if cfg.minify_css_level_2 {
Level::Two
} else if cfg.minify_css_level_3 {
Level::Three
} else {
// Default to One, as other levels may perform dangerous optimisations.
Level::One
},
);
2022-06-21 03:29:12 -04:00
// TODO Collect error as warning.
if let Ok(min) = result {
if min.len() < code.len() {
out.extend_from_slice(min.as_bytes());
return;
};
};
}
2022-06-21 03:29:12 -04:00
out.extend_from_slice(trimmed(code));
2021-08-06 02:17:45 -04:00
}