]> git.proxmox.com Git - rustc.git/blobdiff - vendor/minifier/src/json/mod.rs
New upstream version 1.63.0+dfsg1
[rustc.git] / vendor / minifier / src / json / mod.rs
index 2362303ef445d48f0ebac7a77ab61b18e5c7dc8e..44c8a1c924598824e445569706a2e381e0d04c25 100644 (file)
@@ -1,11 +1,12 @@
 // Take a look at the license at the top of the repository in the LICENSE file.
 
-use json::{
+use crate::json::{
     json_minifier::{keep_element, JsonMinifier},
     read::json_read::JsonRead,
     string::JsonMultiFilter,
 };
-use std::io::Read;
+use std::fmt;
+use std::io::{self, Read};
 
 mod read {
     mod byte_to_char;
@@ -24,22 +25,35 @@ type JsonMethod = fn(&mut JsonMinifier, &char, Option<&char>) -> bool;
 /// # Example
 ///
 /// ```rust
-/// extern crate minifier;
 /// use minifier::json::minify;
 ///
-/// fn main() {
-///     let json = r#"
-///            {
-///                "test": "test",
-///                "test2": 2
-///            }
-///        "#.into();
-///     let json_minified = minify(json);
-/// }
+/// let json = r#"
+///        {
+///            "test": "test",
+///            "test2": 2
+///        }
+///    "#.into();
+/// let json_minified = minify(json);
+/// assert_eq!(&json_minified.to_string(), r#"{"test":"test","test2":2}"#);
 /// ```
 #[inline]
-pub fn minify(json: &str) -> String {
-    JsonMultiFilter::new(json.chars(), keep_element).collect()
+pub fn minify(json: &str) -> Minified<'_> {
+    Minified(JsonMultiFilter::new(json.chars(), keep_element))
+}
+
+#[derive(Debug)]
+pub struct Minified<'a>(JsonMultiFilter<'a, JsonMethod>);
+
+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)
+    }
 }
 
 /// Minifies a given Read by JSON minification rules
@@ -81,7 +95,7 @@ fn removal_of_control_characters() {
     let input = "\n".into();
     let expected: String = "".into();
     let actual = minify(input);
-    assert_eq!(actual, expected);
+    assert_eq!(actual.to_string(), expected);
 }
 
 #[test]
@@ -96,5 +110,5 @@ fn removal_of_whitespace_outside_of_tags() {
     .into();
     let expected: String = "{\"test\":\"\\\" test2\",\"test2\":\"\",\"test3\":\" \"}".into();
     let actual = minify(input);
-    assert_eq!(actual, expected);
+    assert_eq!(actual.to_string(), expected);
 }