velocity/
colors.rs

1pub trait Paint {
2    fn red(&self) -> String;
3    fn green(&self) -> String;
4    fn yellow(&self) -> String;
5    fn blue(&self) -> String;
6    fn magenta(&self) -> String;
7    fn cyan(&self) -> String;
8    fn white(&self) -> String;
9    fn gray(&self) -> String;
10    fn bright_red(&self) -> String;
11    fn bright_green(&self) -> String;
12    fn bright_yellow(&self) -> String;
13    fn bright_blue(&self) -> String;
14    fn bright_magenta(&self) -> String;
15    fn bright_cyan(&self) -> String;
16    fn bright_white(&self) -> String;
17
18    fn underline(&self) -> String;
19    fn bold(&self) -> String;
20    fn italic(&self) -> String;
21    fn strikethrough(&self) -> String;
22
23    fn black_bg(&self) -> String;
24    fn red_bg(&self) -> String;
25    fn green_bg(&self) -> String;
26    fn yellow_bg(&self) -> String;
27    fn blue_bg(&self) -> String;
28    fn magenta_bg(&self) -> String;
29    fn cyan_bg(&self) -> String;
30    fn white_bg(&self) -> String;
31    fn gray_bg(&self) -> String;
32    fn bright_red_bg(&self) -> String;
33    fn bright_green_bg(&self) -> String;
34    fn bright_yellow_bg(&self) -> String;
35    fn bright_blue_bg(&self) -> String;
36    fn bright_magenta_bg(&self) -> String;
37    fn bright_cyan_bg(&self) -> String;
38    fn bright_white_bg(&self) -> String;
39    fn reset(&self) -> String;
40}
41
42impl Paint for String {
43    fn red(&self) -> String {
44        format!("\x1b[31m{}", self)
45    }
46
47    fn green(&self) -> String {
48        format!("\x1b[32m{}", self)
49    }
50
51    fn yellow(&self) -> String {
52        format!("\x1b[33m{}", self)
53    }
54
55    fn blue(&self) -> String {
56        format!("\x1b[34m{}", self)
57    }
58
59    fn magenta(&self) -> String {
60        format!("\x1b[35m{}", self)
61    }
62
63    fn cyan(&self) -> String {
64        format!("\x1b[36m{}", self)
65    }
66
67    fn white(&self) -> String {
68        format!("\x1b[37m{}", self)
69    }
70
71    fn gray(&self) -> String {
72        format!("\x1b[90m{}", self)
73    }
74
75    fn bright_red(&self) -> String {
76        format!("\x1b[91m{}", self)
77    }
78
79    fn bright_green(&self) -> String {
80        format!("\x1b[92m{}", self)
81    }
82
83    fn bright_yellow(&self) -> String {
84        format!("\x1b[93m{}", self)
85    }
86
87    fn bright_blue(&self) -> String {
88        format!("\x1b[94m{}", self)
89    }
90
91    fn bright_magenta(&self) -> String {
92        format!("\x1b[95m{}", self)
93    }
94
95    fn bright_cyan(&self) -> String {
96        format!("\x1b[96m{}", self)
97    }
98
99    fn bright_white(&self) -> String {
100        format!("\x1b[97m{}", self)
101    }
102
103    fn underline(&self) -> String {
104        format!("\x1b[4m{}", self)
105    }
106
107    fn bold(&self) -> String {
108        format!("\x1b[1m{}", self)
109    }
110
111    fn italic(&self) -> String {
112        format!("\x1b[3m{}", self)
113    }
114
115    fn strikethrough(&self) -> String {
116        format!("\x1b[9m{}", self)
117    }
118
119    fn black_bg(&self) -> String {
120        format!("\x1b[40m{}", self)
121    }
122
123    fn red_bg(&self) -> String {
124        format!("\x1b[41m{}", self)
125    }
126
127    fn green_bg(&self) -> String {
128        format!("\x1b[42m{}", self)
129    }
130
131    fn yellow_bg(&self) -> String {
132        format!("\x1b[43m{}", self)
133    }
134
135    fn blue_bg(&self) -> String {
136        format!("\x1b[44m{}", self)
137    }
138
139    fn magenta_bg(&self) -> String {
140        format!("\x1b[45m{}", self)
141    }
142
143    fn cyan_bg(&self) -> String {
144        format!("\x1b[46m{}", self)
145    }
146
147    fn white_bg(&self) -> String {
148        format!("\x1b[47m{}", self)
149    }
150
151    fn gray_bg(&self) -> String {
152        format!("\x1b[100m{}", self)
153    }
154
155    fn bright_red_bg(&self) -> String {
156        format!("\x1b[101m{}", self)
157    }
158
159    fn bright_green_bg(&self) -> String {
160        format!("\x1b[102m{}", self)
161    }
162
163    fn bright_yellow_bg(&self) -> String {
164        format!("\x1b[103m{}", self)
165    }
166
167    fn bright_blue_bg(&self) -> String {
168        format!("\x1b[104m{}", self)
169    }
170
171    fn bright_magenta_bg(&self) -> String {
172        format!("\x1b[105m{}", self)
173    }
174
175    fn bright_cyan_bg(&self) -> String {
176        format!("\x1b[106m{}", self)
177    }
178
179    fn bright_white_bg(&self) -> String {
180        format!("\x1b[107m{}", self)
181    }
182
183    fn reset(&self) -> String {
184        format!("\x1b[0m{}", self)
185    }
186}
187
188impl<'a> Paint for &'a str {
189    fn red(&self) -> String {
190        format!("\x1b[31m{}", self)
191    }
192
193    fn green(&self) -> String {
194        format!("\x1b[32m{}", self)
195    }
196
197    fn yellow(&self) -> String {
198        format!("\x1b[33m{}", self)
199    }
200
201    fn blue(&self) -> String {
202        format!("\x1b[34m{}", self)
203    }
204
205    fn magenta(&self) -> String {
206        format!("\x1b[35m{}", self)
207    }
208
209    fn cyan(&self) -> String {
210        format!("\x1b[36m{}", self)
211    }
212
213    fn white(&self) -> String {
214        format!("\x1b[37m{}", self)
215    }
216
217    fn gray(&self) -> String {
218        format!("\x1b[90m{}", self)
219    }
220
221    fn bright_red(&self) -> String {
222        format!("\x1b[91m{}", self)
223    }
224
225    fn bright_green(&self) -> String {
226        format!("\x1b[92m{}", self)
227    }
228
229    fn bright_yellow(&self) -> String {
230        format!("\x1b[93m{}", self)
231    }
232
233    fn bright_blue(&self) -> String {
234        format!("\x1b[94m{}", self)
235    }
236
237    fn bright_magenta(&self) -> String {
238        format!("\x1b[95m{}", self)
239    }
240
241    fn bright_cyan(&self) -> String {
242        format!("\x1b[96m{}", self)
243    }
244
245    fn bright_white(&self) -> String {
246        format!("\x1b[97m{}", self)
247    }
248
249    fn underline(&self) -> String {
250        format!("\x1b[4m{}", self)
251    }
252
253    fn bold(&self) -> String {
254        format!("\x1b[1m{}", self)
255    }
256
257    fn italic(&self) -> String {
258        format!("\x1b[3m{}", self)
259    }
260
261    fn strikethrough(&self) -> String {
262        format!("\x1b[9m{}", self)
263    }
264
265    fn black_bg(&self) -> String {
266        format!("\x1b[40m{}", self)
267    }
268
269    fn red_bg(&self) -> String {
270        format!("\x1b[41m{}", self)
271    }
272
273    fn green_bg(&self) -> String {
274        format!("\x1b[42m{}", self)
275    }
276
277    fn yellow_bg(&self) -> String {
278        format!("\x1b[43m{}", self)
279    }
280
281    fn blue_bg(&self) -> String {
282        format!("\x1b[44m{}", self)
283    }
284
285    fn magenta_bg(&self) -> String {
286        format!("\x1b[45m{}", self)
287    }
288
289    fn cyan_bg(&self) -> String {
290        format!("\x1b[46m{}", self)
291    }
292
293    fn white_bg(&self) -> String {
294        format!("\x1b[47m{}", self)
295    }
296
297    fn gray_bg(&self) -> String {
298        format!("\x1b[100m{}", self)
299    }
300
301    fn bright_red_bg(&self) -> String {
302        format!("\x1b[101m{}", self)
303    }
304
305    fn bright_green_bg(&self) -> String {
306        format!("\x1b[102m{}", self)
307    }
308
309    fn bright_yellow_bg(&self) -> String {
310        format!("\x1b[103m{}", self)
311    }
312
313    fn bright_blue_bg(&self) -> String {
314        format!("\x1b[104m{}", self)
315    }
316
317    fn bright_magenta_bg(&self) -> String {
318        format!("\x1b[105m{}", self)
319    }
320
321    fn bright_cyan_bg(&self) -> String {
322        format!("\x1b[106m{}", self)
323    }
324
325    fn bright_white_bg(&self) -> String {
326        format!("\x1b[107m{}", self)
327    }
328
329    fn reset(&self) -> String {
330        format!("\x1b[0m{}", self)
331    }
332}