macro_colors/
lib.rs

1pub trait Colorize {
2    // Regular colors
3    fn black(&self) -> String;
4    fn red(&self) -> String;
5    fn green(&self) -> String;
6    fn yellow(&self) -> String;
7    fn blue(&self) -> String;
8    fn magenta(&self) -> String;
9    fn cyan(&self) -> String;
10    fn white(&self) -> String;
11
12    // Bright colors
13    fn bright_black(&self) -> String;
14    fn bright_red(&self) -> String;
15    fn bright_green(&self) -> String;
16    fn bright_yellow(&self) -> String;
17    fn bright_blue(&self) -> String;
18    fn bright_magenta(&self) -> String;
19    fn bright_cyan(&self) -> String;
20    fn bright_white(&self) -> String;
21
22    // Background colors
23    fn on_black(&self) -> String;
24    fn on_red(&self) -> String;
25    fn on_green(&self) -> String;
26    fn on_yellow(&self) -> String;
27    fn on_blue(&self) -> String;
28    fn on_magenta(&self) -> String;
29    fn on_cyan(&self) -> String;
30    fn on_white(&self) -> String;
31
32    // Text styles
33    fn bold(&self) -> String;
34    fn italic(&self) -> String;
35}
36
37impl Colorize for String {
38    fn black(&self) -> String {
39        format!("\x1B[30m{}\x1B[0m", self)
40    }
41
42    fn red(&self) -> String {
43        format!("\x1B[31m{}\x1B[0m", self)
44    }
45
46    fn green(&self) -> String {
47        format!("\x1B[32m{}\x1B[0m", self)
48    }
49
50    fn yellow(&self) -> String {
51        format!("\x1B[33m{}\x1B[0m", self)
52    }
53
54    fn blue(&self) -> String {
55        format!("\x1B[34m{}\x1B[0m", self)
56    }
57
58    fn magenta(&self) -> String {
59        format!("\x1B[35m{}\x1B[0m", self)
60    }
61
62    fn cyan(&self) -> String {
63        format!("\x1B[36m{}\x1B[0m", self)
64    }
65
66    fn white(&self) -> String {
67        format!("\x1B[37m{}\x1B[0m", self)
68    }
69
70    fn bright_black(&self) -> String {
71        format!("\x1B[30;1m{}\x1B[0m", self)
72    }
73
74    fn bright_red(&self) -> String {
75        format!("\x1B[31;1m{}\x1B[0m", self)
76    }
77
78    fn bright_green(&self) -> String {
79        format!("\x1B[32;1m{}\x1B[0m", self)
80    }
81
82    fn bright_yellow(&self) -> String {
83        format!("\x1B[33;1m{}\x1B[0m", self)
84    }
85
86    fn bright_blue(&self) -> String {
87        format!("\x1B[34;1m{}\x1B[0m", self)
88    }
89
90    fn bright_magenta(&self) -> String {
91        format!("\x1B[35;1m{}\x1B[0m", self)
92    }
93
94    fn bright_cyan(&self) -> String {
95        format!("\x1B[36;1m{}\x1B[0m", self)
96    }
97
98    fn bright_white(&self) -> String {
99        format!("\x1B[37;1m{}\x1B[0m", self)
100    }
101
102    fn on_black(&self) -> String {
103        format!("\x1B[40m{}\x1B[0m", self)
104    }
105
106    fn on_red(&self) -> String {
107        format!("\x1B[41m{}\x1B[0m", self)
108    }
109
110    fn on_green(&self) -> String {
111        format!("\x1B[42m{}\x1B[0m", self)
112    }
113
114    fn on_yellow(&self) -> String {
115        format!("\x1B[43m{}\x1B[0m", self)
116    }
117
118    fn on_blue(&self) -> String {
119        format!("\x1B[44m{}\x1B[0m", self)
120    }
121
122    fn on_magenta(&self) -> String {
123        format!("\x1B[45m{}\x1B[0m", self)
124    }
125
126    fn on_cyan(&self) -> String {
127        format!("\x1B[46m{}\x1B[0m", self)
128    }
129
130    fn on_white(&self) -> String {
131        format!("\x1B[47m{}\x1B[0m", self)
132    }
133
134    fn bold(&self) -> String {
135        format!("\x1B[1m{}\x1B[0m", self)
136    }
137
138    fn italic(&self) -> String {
139        format!("\x1B[3m{}\x1B[0m", self)
140    }
141}
142
143impl<'a> Colorize for &'a str {
144    fn black(&self) -> String {
145        format!("\x1B[30m{}\x1B[0m", self)
146    }
147
148    fn red(&self) -> String {
149        format!("\x1B[31m{}\x1B[0m", self)
150    }
151
152    fn green(&self) -> String {
153        format!("\x1B[32m{}\x1B[0m", self)
154    }
155
156    fn yellow(&self) -> String {
157        format!("\x1B[33m{}\x1B[0m", self)
158    }
159
160    fn blue(&self) -> String {
161        format!("\x1B[34m{}\x1B[0m", self)
162    }
163
164    fn magenta(&self) -> String {
165        format!("\x1B[35m{}\x1B[0m", self)
166    }
167
168    fn cyan(&self) -> String {
169        format!("\x1B[36m{}\x1B[0m", self)
170    }
171
172    fn white(&self) -> String {
173        format!("\x1B[37m{}\x1B[0m", self)
174    }
175
176    fn bright_black(&self) -> String {
177        format!("\x1B[30;1m{}\x1B[0m", self)
178    }
179
180    fn bright_red(&self) -> String {
181        format!("\x1B[31;1m{}\x1B[0m", self)
182    }
183
184    fn bright_green(&self) -> String {
185        format!("\x1B[32;1m{}\x1B[0m", self)
186    }
187
188    fn bright_yellow(&self) -> String {
189        format!("\x1B[33;1m{}\x1B[0m", self)
190    }
191
192    fn bright_blue(&self) -> String {
193        format!("\x1B[34;1m{}\x1B[0m", self)
194    }
195
196    fn bright_magenta(&self) -> String {
197        format!("\x1B[35;1m{}\x1B[0m", self)
198    }
199
200    fn bright_cyan(&self) -> String {
201        format!("\x1B[36;1m{}\x1B[0m", self)
202    }
203
204    fn bright_white(&self) -> String {
205        format!("\x1B[37;1m{}\x1B[0m", self)
206    }
207
208    fn on_black(&self) -> String {
209        format!("\x1B[40m{}\x1B[0m", self)
210    }
211
212    fn on_red(&self) -> String {
213        format!("\x1B[41m{}\x1B[0m", self)
214    }
215
216    fn on_green(&self) -> String {
217        format!("\x1B[42m{}\x1B[0m", self)
218    }
219
220    fn on_yellow(&self) -> String {
221        format!("\x1B[43m{}\x1B[0m", self)
222    }
223
224    fn on_blue(&self) -> String {
225        format!("\x1B[44m{}\x1B[0m", self)
226    }
227
228    fn on_magenta(&self) -> String {
229        format!("\x1B[45m{}\x1B[0m", self)
230    }
231
232    fn on_cyan(&self) -> String {
233        format!("\x1B[46m{}\x1B[0m", self)
234    }
235
236    fn on_white(&self) -> String {
237        format!("\x1B[47m{}\x1B[0m", self)
238    }
239
240    fn bold(&self) -> String {
241        format!("\x1B[1m{}\x1B[0m", self)
242    }
243
244    fn italic(&self) -> String {
245        format!("\x1B[3m{}\x1B[0m", self)
246    }
247}
248
249impl<'a> Colorize for &'a mut str {
250    fn black(&self) -> String {
251        format!("\x1B[30m{}\x1B[0m", self)
252    }
253
254    fn red(&self) -> String {
255        format!("\x1B[31m{}\x1B[0m", self)
256    }
257
258    fn green(&self) -> String {
259        format!("\x1B[32m{}\x1B[0m", self)
260    }
261
262    fn yellow(&self) -> String {
263        format!("\x1B[33m{}\x1B[0m", self)
264    }
265
266    fn blue(&self) -> String {
267        format!("\x1B[34m{}\x1B[0m", self)
268    }
269
270    fn magenta(&self) -> String {
271        format!("\x1B[35m{}\x1B[0m", self)
272    }
273
274    fn cyan(&self) -> String {
275        format!("\x1B[36m{}\x1B[0m", self)
276    }
277
278    fn white(&self) -> String {
279        format!("\x1B[37m{}\x1B[0m", self)
280    }
281
282    fn bright_black(&self) -> String {
283        format!("\x1B[30;1m{}\x1B[0m", self)
284    }
285
286    fn bright_red(&self) -> String {
287        format!("\x1B[31;1m{}\x1B[0m", self)
288    }
289
290    fn bright_green(&self) -> String {
291        format!("\x1B[32;1m{}\x1B[0m", self)
292    }
293
294    fn bright_yellow(&self) -> String {
295        format!("\x1B[33;1m{}\x1B[0m", self)
296    }
297
298    fn bright_blue(&self) -> String {
299        format!("\x1B[34;1m{}\x1B[0m", self)
300    }
301
302    fn bright_magenta(&self) -> String {
303        format!("\x1B[35;1m{}\x1B[0m", self)
304    }
305
306    fn bright_cyan(&self) -> String {
307        format!("\x1B[36;1m{}\x1B[0m", self)
308    }
309
310    fn bright_white(&self) -> String {
311        format!("\x1B[37;1m{}\x1B[0m", self)
312    }
313
314    fn on_black(&self) -> String {
315        format!("\x1B[40m{}\x1B[0m", self)
316    }
317
318    fn on_red(&self) -> String {
319        format!("\x1B[41m{}\x1B[0m", self)
320    }
321
322    fn on_green(&self) -> String {
323        format!("\x1B[42m{}\x1B[0m", self)
324    }
325
326    fn on_yellow(&self) -> String {
327        format!("\x1B[43m{}\x1B[0m", self)
328    }
329
330    fn on_blue(&self) -> String {
331        format!("\x1B[44m{}\x1B[0m", self)
332    }
333
334    fn on_magenta(&self) -> String {
335        format!("\x1B[45m{}\x1B[0m", self)
336    }
337
338    fn on_cyan(&self) -> String {
339        format!("\x1B[46m{}\x1B[0m", self)
340    }
341
342    fn on_white(&self) -> String {
343        format!("\x1B[47m{}\x1B[0m", self)
344    }
345
346    fn bold(&self) -> String {
347        format!("\x1B[1m{}\x1B[0m", self)
348    }
349
350    fn italic(&self) -> String {
351        format!("\x1B[3m{}\x1B[0m", self)
352    }
353}
354
355#[macro_export]
356macro_rules! red_println {
357    ($($arg:tt)*) => {{
358        println!("{}", format_args!("{}", format!($($arg)*).red()));
359    }}
360}
361
362#[macro_export]
363macro_rules! bold_red_println {
364    ($($arg:tt)*) => {{
365        println!("{}", format_args!("{}", format!($($arg)*).red().bold()));
366    }}
367}
368
369#[macro_export]
370macro_rules! green_println {
371    ($($arg:tt)*) => {{
372        println!("{}", format_args!("{}", format!($($arg)*).green()));
373    }}
374}
375
376#[macro_export]
377macro_rules! bold_green_println {
378    ($($arg:tt)*) => {{
379        println!("{}", format_args!("{}", format!($($arg)*).green().bold()));
380    }}
381}
382
383#[macro_export]
384macro_rules! yellow_println {
385    ($($arg:tt)*) => {{
386        println!("{}", format_args!("{}", format!($($arg)*).yellow()));
387    }}
388}
389
390#[macro_export]
391macro_rules! bold_yellow_println {
392    ($($arg:tt)*) => {{
393        println!("{}", format_args!("{}", format!($($arg)*).yellow().bold()));
394    }}
395}
396
397#[macro_export]
398macro_rules! blue_println {
399    ($($arg:tt)*) => {{
400        println!("{}", format_args!("{}", format!($($arg)*).blue()));
401    }}
402}
403
404#[macro_export]
405macro_rules! bold_blue_println {
406    ($($arg:tt)*) => {{
407        println!("{}", format_args!("{}", format!($($arg)*).blue().bold()));
408    }}
409}
410
411#[macro_export]
412macro_rules! purple_println {
413    ($($arg:tt)*) => {{
414        println!("{}", format_args!("{}", format!($($arg)*).purple()));
415    }}
416}
417
418#[macro_export]
419macro_rules! bold_purple_println {
420    ($($arg:tt)*) => {{
421        println!("{}", format_args!("{}", format!($($arg)*).purple().bold()));
422    }}
423}
424
425#[macro_export]
426macro_rules! cyan_println {
427    ($($arg:tt)*) => {{
428        println!("{}", format_args!("{}", format!($($arg)*).cyan()));
429    }}
430}
431
432#[macro_export]
433macro_rules! bold_cyan_println {
434    ($($arg:tt)*) => {{
435        println!("{}", format_args!("{}", format!($($arg)*).cyan().bold()));
436    }}
437}
438
439#[macro_export]
440macro_rules! white_println {
441    ($($arg:tt)*) => {{
442        println!("{}", format_args!("{}", format!($($arg)*).white()));
443    }}
444}
445
446#[macro_export]
447macro_rules! bold_white_println {
448    ($($arg:tt)*) => {{
449        println!("{}", format_args!("{}", format!($($arg)*).white().bold()));
450    }}
451}
452#[macro_export]
453macro_rules! italic_red_println {
454    ($($arg:tt)*) => {{
455        println!("{}", format_args!("{}", format!($($arg)*).red().italic()));
456    }}
457}
458
459#[macro_export]
460macro_rules! italic_green_println {
461    ($($arg:tt)*) => {{
462        println!("{}", format_args!("{}", format!($($arg)*).green().italic()));
463    }}
464}
465
466#[macro_export]
467macro_rules! italic_yellow_println {
468    ($($arg:tt)*) => {{
469        println!("{}", format_args!("{}", format!($($arg)*).yellow().italic()));
470    }}
471}
472
473#[macro_export]
474macro_rules! italic_blue_println {
475    ($($arg:tt)*) => {{
476        println!("{}", format_args!("{}", format!($($arg)*).blue().italic()));
477    }}
478}
479
480#[macro_export]
481macro_rules! italic_purple_println {
482    ($($arg:tt)*) => {{
483        println!("{}", format_args!("{}", format!($($arg)*).purple().italic()));
484    }}
485}
486
487#[macro_export]
488macro_rules! italic_cyan_println {
489    ($($arg:tt)*) => {{
490        println!("{}", format_args!("{}", format!($($arg)*).cyan().italic()));
491    }}
492}
493#[macro_export]
494macro_rules! italic_white_println {
495    ($($arg:tt)*) => {{
496        println!("{}", format_args!("{}", format!($($arg)*).white().italic()));
497    }}
498}
499#[macro_export]
500macro_rules! bold_italic_red_println {
501    ($($arg:tt)*) => {{
502        println!("{}", format_args!("{}", format!($($arg)*).red().bold().italic()));
503    }}
504}
505
506#[macro_export]
507macro_rules! bold_italic_green_println {
508    ($($arg:tt)*) => {{
509        println!("{}", format_args!("{}", format!($($arg)*).green().bold().italic()));
510    }}
511}
512
513#[macro_export]
514macro_rules! bold_italic_yellow_println {
515    ($($arg:tt)*) => {{
516        println!("{}", format_args!("{}", format!($($arg)*).yellow().bold().italic()));
517    }}
518}
519
520#[macro_export]
521macro_rules! bold_italic_blue_println {
522    ($($arg:tt)*) => {{
523        println!("{}", format_args!("{}", format!($($arg)*).blue().bold().italic()));
524    }}
525}
526
527#[macro_export]
528macro_rules! bold_italic_purple_println {
529    ($($arg:tt)*) => {{
530        println!("{}", format_args!("{}", format!($($arg)*).purple().bold().italic()));
531    }}
532}
533
534#[macro_export]
535macro_rules! bold_italic_cyan_println {
536    ($($arg:tt)*) => {{
537        println!("{}", format_args!("{}", format!($($arg)*).cyan().bold().italic()));
538    }}
539}
540
541#[macro_export]
542macro_rules! bold_italic_white_println {
543    ($($arg:tt)*) => {{
544        println!("{}", format_args!("{}", format!($($arg)*).white().bold().italic()));
545    }}
546}
547#[macro_export]
548macro_rules! bg_red_println {
549    ($($arg:tt)*) => {{
550        println!("{}", format_args!("{}", format!($($arg)*).on_red()));
551    }}
552}
553
554#[macro_export]
555macro_rules! bg_green_println {
556    ($($arg:tt)*) => {{
557        println!("{}", format_args!("{}", format!($($arg)*).on_green()));
558    }}
559}
560
561#[macro_export]
562macro_rules! bg_yellow_println {
563    ($($arg:tt)*) => {{
564        println!("{}", format_args!("{}", format!($($arg)*).on_yellow()));
565    }}
566}
567
568#[macro_export]
569macro_rules! bg_blue_println {
570    ($($arg:tt)*) => {{
571        println!("{}", format_args!("{}", format!($($arg)*).on_blue()));
572    }}
573}
574
575#[macro_export]
576macro_rules! bg_purple_println {
577    ($($arg:tt)*) => {{
578        println!("{}", format_args!("{}", format!($($arg)*).on_purple()));
579    }}
580}
581
582#[macro_export]
583macro_rules! bg_cyan_println {
584    ($($arg:tt)*) => {{
585        println!("{}", format_args!("{}", format!($($arg)*).on_cyan()));
586    }}
587}
588
589#[macro_export]
590macro_rules! bg_white_println {
591    ($($arg:tt)*) => {{
592        println!("{}", format_args!("{}", format!($($arg)*).on_white()));
593    }}
594}
595#[macro_export]
596macro_rules! bold_bg_red_println {
597    ($($arg:tt)*) => {{
598        println!("{}", format_args!("{}", format!($($arg)*).on_red().bold()));
599    }}
600}
601
602#[macro_export]
603macro_rules! bold_bg_green_println {
604    ($($arg:tt)*) => {{
605        println!("{}", format_args!("{}", format!($($arg)*).on_green().bold()));
606    }}
607}
608
609#[macro_export]
610macro_rules! bold_bg_yellow_println {
611    ($($arg:tt)*) => {{
612        println!("{}", format_args!("{}", format!($($arg)*).on_yellow().bold()));
613    }}
614}
615
616#[macro_export]
617macro_rules! bold_bg_blue_println {
618    ($($arg:tt)*) => {{
619        println!("{}", format_args!("{}", format!($($arg)*).on_blue().bold()));
620    }}
621}
622
623#[macro_export]
624macro_rules! bold_bg_purple_println {
625    ($($arg:tt)*) => {{
626        println!("{}", format_args!("{}", format!($($arg)*).on_purple().bold()));
627    }}
628}
629
630#[macro_export]
631macro_rules! bold_bg_cyan_println {
632    ($($arg:tt)*) => {{
633        println!("{}", format_args!("{}", format!($($arg)*).on_cyan().bold()));
634    }}
635}
636
637#[macro_export]
638macro_rules! bold_bg_white_println {
639    ($($arg:tt)*) => {{
640        println!("{}", format_args!("{}", format!($($arg)*).on_white().bold()));
641    }}
642}