show_my_errors/
stylesheet.rs1use super::Severity;
2use termcolor::{Color, ColorSpec};
3
4#[derive(Clone, Debug, Default)]
6pub struct Stylesheet {
7 pub info: ColorSpec,
9 pub warning: ColorSpec,
11 pub error: ColorSpec,
13 pub linenr: ColorSpec,
15 pub filename: ColorSpec,
17 pub content: ColorSpec,
19}
20
21impl Stylesheet {
22 pub fn monochrome() -> Self {
25 Self::default()
26 }
27
28 pub fn colored() -> Self {
30 let mut info = ColorSpec::new();
31 let mut warning = ColorSpec::new();
32 let mut error = ColorSpec::new();
33 let mut linenr = ColorSpec::new();
34 let mut filename = ColorSpec::new();
35 let content = ColorSpec::new();
36 info.set_bold(true);
37 warning.set_bold(true).set_fg(Some(Color::Yellow));
38 error.set_bold(true).set_fg(Some(Color::Red));
39 linenr.set_bold(true).set_fg(Some(Color::Blue));
40 filename.set_bold(true);
41 Self {
42 info,
43 warning,
44 error,
45 linenr,
46 filename,
47 content,
48 }
49 }
50
51 pub fn by_severity(&self, severity: &Severity) -> &ColorSpec {
53 match severity {
54 Severity::Info => &self.info,
55 Severity::Warning => &self.warning,
56 Severity::Error => &self.error,
57 }
58 }
59}