1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use std::{fmt, io};
4
5mod token;
6
7/// Minifies a given CSS source code.
8///
9/// # Example
10///
11/// ```rust
12/// use minifier::css::minify;
13///
14/// let css = r#"
15/// .foo > p {
16/// color: red;
17/// }"#.into();
18/// let css_minified = minify(css).expect("minification failed");
19/// assert_eq!(&css_minified.to_string(), ".foo>p{color:red;}");
20/// ```
21pub fn minify(content: &str) -> Result<Minified<'_>, &'static str> {
22 token::tokenize(content).map(op:Minified)
23}
24
25pub struct Minified<'a>(token::Tokens<'a>);
26
27impl<'a> Minified<'a> {
28 pub fn write<W: io::Write>(self, w: W) -> io::Result<()> {
29 self.0.write(w)
30 }
31}
32
33impl<'a> fmt::Display for Minified<'a> {
34 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
35 self.0.fmt(f)
36 }
37}
38
39#[cfg(test)]
40mod tests;
41