1use 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 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 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 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 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 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);