Skip to main content

tempera/
traits.rs

1//! A trait for colorizing text output in the terminal.
2
3use crate::colorize;
4
5macro_rules! impl_colorize {
6  ($type:ty) => {
7    impl Colorize for $type {
8      fn with_style(&self, style: &str) -> String {
9        colorize(self, &[style])
10      }
11
12      fn with_styles(&self, style: &[&str]) -> String {
13        colorize(self, style)
14      }
15
16      fn reset(&self) -> String {
17        colorize(self, &["reset"])
18      }
19
20      fn foreground(&self) -> String {
21        colorize(self, &["foreground"])
22      }
23
24      fn background(&self) -> String {
25        colorize(self, &["background"])
26      }
27
28      fn bold(&self) -> String {
29        colorize(self, &["bold"])
30      }
31
32      fn dim(&self) -> String {
33        colorize(self, &["dim"])
34      }
35
36      fn italic(&self) -> String {
37        colorize(self, &["italic"])
38      }
39
40      fn underline(&self) -> String {
41        colorize(self, &["underline"])
42      }
43
44      fn inverse(&self) -> String {
45        colorize(self, &["inverse"])
46      }
47
48      fn hidden(&self) -> String {
49        colorize(self, &["hidden"])
50      }
51
52      fn strikethrough(&self) -> String {
53        colorize(self, &["strikethrough"])
54      }
55
56      fn black(&self) -> String {
57        colorize(self, &["black"])
58      }
59
60      fn red(&self) -> String {
61        colorize(self, &["red"])
62      }
63
64      fn green(&self) -> String {
65        colorize(self, &["green"])
66      }
67
68      fn yellow(&self) -> String {
69        colorize(self, &["yellow"])
70      }
71
72      fn blue(&self) -> String {
73        colorize(self, &["blue"])
74      }
75
76      fn magenta(&self) -> String {
77        colorize(self, &["magenta"])
78      }
79
80      fn cyan(&self) -> String {
81        colorize(self, &["cyan"])
82      }
83
84      fn white(&self) -> String {
85        colorize(self, &["white"])
86      }
87
88      fn gray(&self) -> String {
89        colorize(self, &["gray"])
90      }
91
92      fn bg_black(&self) -> String {
93        colorize(self, &["bg_black"])
94      }
95
96      fn bg_red(&self) -> String {
97        colorize(self, &["bg_red"])
98      }
99
100      fn bg_green(&self) -> String {
101        colorize(self, &["bg_green"])
102      }
103
104      fn bg_yellow(&self) -> String {
105        colorize(self, &["bg_yellow"])
106      }
107
108      fn bg_blue(&self) -> String {
109        colorize(self, &["bg_blue"])
110      }
111
112      fn bg_magenta(&self) -> String {
113        colorize(self, &["bg_magenta"])
114      }
115
116      fn bg_cyan(&self) -> String {
117        colorize(self, &["bg_cyan"])
118      }
119
120      fn bg_white(&self) -> String {
121        colorize(self, &["bg_white"])
122      }
123
124      fn bright_red(&self) -> String {
125        colorize(self, &["bright_red"])
126      }
127
128      fn bright_green(&self) -> String {
129        colorize(self, &["bright_green"])
130      }
131
132      fn bright_yellow(&self) -> String {
133        colorize(self, &["bright_yellow"])
134      }
135
136      fn bright_blue(&self) -> String {
137        colorize(self, &["bright_blue"])
138      }
139
140      fn bright_magenta(&self) -> String {
141        colorize(self, &["bright_magenta"])
142      }
143
144      fn bright_cyan(&self) -> String {
145        colorize(self, &["bright_cyan"])
146      }
147
148      fn bright_white(&self) -> String {
149        colorize(self, &["bright_white"])
150      }
151
152      fn bright_bg_black(&self) -> String {
153        colorize(self, &["bright_bg_black"])
154      }
155
156      fn bright_bg_red(&self) -> String {
157        colorize(self, &["bright_bg_red"])
158      }
159
160      fn bright_bg_green(&self) -> String {
161        colorize(self, &["bright_bg_green"])
162      }
163
164      fn bright_bg_yellow(&self) -> String {
165        colorize(self, &["bright_bg_yellow"])
166      }
167
168      fn bright_bg_blue(&self) -> String {
169        colorize(self, &["bright_bg_blue"])
170      }
171
172      fn bright_bg_magenta(&self) -> String {
173        colorize(self, &["bright_bg_magenta"])
174      }
175
176      fn bright_bg_cyan(&self) -> String {
177        colorize(self, &["bright_bg_cyan"])
178      }
179
180      fn bright_bg_white(&self) -> String {
181        colorize(self, &["bright_bg_white"])
182      }
183    }
184  };
185}
186
187pub trait Colorize {
188  fn with_style(&self, style: &str) -> String;
189  fn with_styles(&self, style: &[&str]) -> String;
190
191  fn reset(&self) -> String;
192  fn foreground(&self) -> String;
193  fn background(&self) -> String;
194  // Style
195  fn bold(&self) -> String;
196  fn dim(&self) -> String;
197  fn italic(&self) -> String;
198  fn underline(&self) -> String;
199  fn inverse(&self) -> String;
200  fn hidden(&self) -> String;
201  fn strikethrough(&self) -> String;
202  // Foreground colors
203  fn black(&self) -> String;
204  fn red(&self) -> String;
205  fn green(&self) -> String;
206  fn yellow(&self) -> String;
207  fn blue(&self) -> String;
208  fn magenta(&self) -> String;
209  fn cyan(&self) -> String;
210  fn white(&self) -> String;
211  fn gray(&self) -> String;
212  // Background colors
213  fn bg_black(&self) -> String;
214  fn bg_red(&self) -> String;
215  fn bg_green(&self) -> String;
216  fn bg_yellow(&self) -> String;
217  fn bg_blue(&self) -> String;
218  fn bg_magenta(&self) -> String;
219  fn bg_cyan(&self) -> String;
220  fn bg_white(&self) -> String;
221  // Bright foreground colors
222  fn bright_red(&self) -> String;
223  fn bright_green(&self) -> String;
224  fn bright_yellow(&self) -> String;
225  fn bright_blue(&self) -> String;
226  fn bright_magenta(&self) -> String;
227  fn bright_cyan(&self) -> String;
228  fn bright_white(&self) -> String;
229  // Bright background colors
230  fn bright_bg_black(&self) -> String;
231  fn bright_bg_red(&self) -> String;
232  fn bright_bg_green(&self) -> String;
233  fn bright_bg_yellow(&self) -> String;
234  fn bright_bg_blue(&self) -> String;
235  fn bright_bg_magenta(&self) -> String;
236  fn bright_bg_cyan(&self) -> String;
237  fn bright_bg_white(&self) -> String;
238}
239
240impl_colorize!(str);
241impl_colorize!(String);