| 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() { |