Crate css_purify [] [src]

css-purify

This library provides a way to identify and remove unused CSS from stylesheets. It does this by looking for selectors that do not match a provided HTML5 document. Pseudo-elements and psuedo-classes are assumed to always match except for :empty, :root, :any-link, :link and :visited.

## Getting Started

### Purifying a CSS stylesheet

extern crate css_purify;
 use ::css_purify::*;
 use ::css_purify::html5ever_ext::*;
 use ::css_purify::html5ever_ext::css::*;

 let document = RcDom::from_file_path_verified_and_stripped_of_comments_and_processing_instructions_and_with_a_sane_doc_type("/path/to/document.html");
    let stylesheet = Stylesheet::from_file_path("/path/to/stylesheet.css");

 // If a CSS rule is unused in all documents (or nodes), then remove it.
 stylesheet.remove_unused_css_rules(&[&document]);

 // (Optionally) Save stylesheet
 stylesheet.to_file_path("/path/to/stylesheet.css");

 // (Optionally) Inject CSS into document, eg for use in self-contained Google AMP pages.
 let mut first_style_node = None;
 rc_dom.find_all_matching_child_nodes_depth_first_including_this_one(&parse_css_selector("head > style[amp]").unwrap(), &mut |node|
 {
    first_style_node = Some(node.clone());
    true
 });
 if let Some(ref first_style_node) = first_style_node
 {
    first_style_node.append_text(&mut rc_dom, &stylesheet.to_css_string());
 }
```

Reexports

pub extern crate html5ever_ext;

Traits

DeduplicatedSelectorsExt

Extensions to DeduplicatedSelectors.

HasCssRulesExt

An extension trait for HasCssRules