MCPcopy Create free account
hub / github.com/csskit/csskit / minify

Function minify

crates/csskit_transform/src/css_minifier.rs:34–57  ·  view source on GitHub ↗
(source_text: &str, features: CssMinifierFeature)

Source from the content-addressed store, hash-verified

32 use css_parse::{CursorCompactWriteSink, CursorOverlaySink, Parser, ToCursors};
33
34 fn minify(source_text: &str, features: CssMinifierFeature) -> (String, bool) {
35 let bump = Bump::default();
36 let mut transformer = Transformer::new_in(&bump, features, &CssAtomSet::ATOMS, source_text);
37 let lexer = Lexer::new(&CssAtomSet::ATOMS, source_text);
38 let mut parser = Parser::new(&bump, source_text, lexer);
39 let mut result = parser.parse_entirely::<StyleSheet>().with_trivia();
40 let mut output = String::new();
41 if let Some(ref mut node) = result.output {
42 transformer.transform(node);
43 let overlays = transformer.overlays();
44 let changed = transformer.has_changed();
45 {
46 let mut overlay_stream = CursorOverlaySink::new(
47 source_text,
48 &*overlays,
49 CursorCompactWriteSink::new(source_text, &mut output),
50 );
51 result.to_cursors(&mut overlay_stream);
52 }
53 (output, changed)
54 } else {
55 panic!("Could not transform output");
56 }
57 }
58
59 #[test]
60 fn test_reduce_lengths_feature() {

Callers 3

test_no_featuresFunction · 0.70

Calls 5

with_triviaMethod · 0.80
transformMethod · 0.80
overlaysMethod · 0.80
has_changedMethod · 0.80
to_cursorsMethod · 0.45

Tested by 3

test_no_featuresFunction · 0.56