]> git.proxmox.com Git - rustc.git/blobdiff - vendor/minifier/src/css/mod.rs
New upstream version 1.63.0+dfsg1
[rustc.git] / vendor / minifier / src / css / mod.rs
index 938fcea2f44d4cd3099e105c0266d3b58931be5f..224ad812669bf5d127c107ac147b95daad51761e 100644 (file)
@@ -1,5 +1,7 @@
 // Take a look at the license at the top of the repository in the LICENSE file.
 
+use std::{fmt, io};
+
 mod token;
 
 /// Minifies a given CSS source code.
@@ -7,19 +9,31 @@ mod token;
 /// # Example
 ///
 /// ```rust
-/// extern crate minifier;
 /// use minifier::css::minify;
 ///
-/// fn main() {
-///     let css = r#"
-///         .foo > p {
-///             color: red;
-///         }"#.into();
-///     let css_minified = minify(css);
-/// }
+/// let css = r#"
+///     .foo > p {
+///         color: red;
+///     }"#.into();
+/// let css_minified = minify(css).expect("minification failed");
+/// assert_eq!(&css_minified.to_string(), ".foo>p{color:red;}");
 /// ```
-pub fn minify<'a>(content: &'a str) -> Result<String, &'static str> {
-    token::tokenize(content).map(|t| format!("{}", t))
+pub fn minify<'a>(content: &'a str) -> Result<Minified<'a>, &'static str> {
+    token::tokenize(content).map(Minified)
+}
+
+pub struct Minified<'a>(token::Tokens<'a>);
+
+impl<'a> Minified<'a> {
+    pub fn write<W: io::Write>(self, w: W) -> io::Result<()> {
+        self.0.write(w)
+    }
+}
+
+impl<'a> fmt::Display for Minified<'a> {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        self.0.fmt(f)
+    }
 }
 
 #[cfg(test)]