]> git.proxmox.com Git - rustc.git/blobdiff - vendor/annotate-snippets-0.6.1/src/stylesheets/color.rs
Update upstream source from tag 'upstream/1.52.1+dfsg1'
[rustc.git] / vendor / annotate-snippets-0.6.1 / src / stylesheets / color.rs
diff --git a/vendor/annotate-snippets-0.6.1/src/stylesheets/color.rs b/vendor/annotate-snippets-0.6.1/src/stylesheets/color.rs
new file mode 100644 (file)
index 0000000..f0a5d9c
--- /dev/null
@@ -0,0 +1,43 @@
+use crate::formatter::style::{Style, StyleClass, Stylesheet};
+
+use ansi_term::Color::Fixed;
+use ansi_term::Style as AnsiTermStyle;
+
+struct AnsiTermStyleWrapper {
+    style: AnsiTermStyle,
+}
+
+impl Style for AnsiTermStyleWrapper {
+    fn paint(&self, text: &str) -> String {
+        format!("{}", self.style.paint(text))
+    }
+
+    fn bold(&self) -> Box<dyn Style> {
+        Box::new(AnsiTermStyleWrapper {
+            style: self.style.clone(),
+        })
+    }
+}
+
+pub struct AnsiTermStylesheet {}
+
+impl Stylesheet for AnsiTermStylesheet {
+    fn get_style(&self, class: StyleClass) -> Box<dyn Style> {
+        let ansi_term_style = match class {
+            StyleClass::Error => Fixed(9).bold(),
+            StyleClass::Warning => Fixed(11).bold(),
+            StyleClass::Info => Fixed(12).bold(),
+            StyleClass::Note => AnsiTermStyle::new().bold(),
+            StyleClass::Help => Fixed(14).bold(),
+
+            StyleClass::LineNo => Fixed(12).bold(),
+
+            StyleClass::Emphasis => AnsiTermStyle::new().bold(),
+
+            StyleClass::None => AnsiTermStyle::new(),
+        };
+        Box::new(AnsiTermStyleWrapper {
+            style: ansi_term_style,
+        })
+    }
+}