color_output/macro/
proc_macro.rs

1/// Output macro
2///
3/// [Official Documentation](https://docs.ltpp.vip/COLOR-OUTPUT/),
4///
5/// # Parameters
6/// - `Output`: The output struct
7///
8/// # Code Example
9///
10/// ## Using the Struct
11///
12/// ```rust
13/// use color_output::*;
14/// output_macro!(Output {
15///     text: "test_proc_macro",
16///     color: ColorType::default(),
17///     bg_color: ColorType::Use(Color::Yellow),
18///     endl: true,
19///     ..Default::default()
20/// });
21/// ```
22///
23/// ## Using the Constructor
24///
25/// ```rust
26/// use color_output::*;
27/// output_macro!(OutputBuilder::new()
28///     .text("test_output_builder")
29///     .color(ColorType::Use(Color::Cyan))
30///     .blod(true)
31///     .endl(true)
32///     .build());
33/// ```
34///
35/// ## Multiple Inputs
36///
37/// ```rust
38/// use color_output::*;
39/// output_macro!(
40///     Output {
41///         text: "test_proc_macro",
42///         color: ColorType::default(),
43///         bg_color: ColorType::Use(Color::Yellow),
44///         endl: true,
45///         ..Default::default()
46///     },
47///     OutputBuilder::new()
48///         .text("test_output_builder1")
49///         .color(ColorType::Color256(0xffffff))
50///         .blod(true)
51///         .endl(true)
52///         .build(),
53///     OutputBuilder::new()
54///         .text("test_output_builder2")
55///         .color(ColorType::Color256(0xffffff))
56///         .blod(true)
57///         .endl(true)
58///         .build()
59/// );
60/// ```
61#[macro_export]
62macro_rules! output_macro {
63    ($($output:expr),*) => {
64        $(
65            $output.output();
66        )*
67    };
68}
69
70#[macro_export]
71macro_rules! print_success {
72    ($($data:expr),*) => {{
73        use crate::*;
74        let binding: String = format!("[{} => success]", current_time());
75        let mut time_output_builder: OutputBuilder<'_> = OutputBuilder::new();
76        let time_output: Output<'_> = time_output_builder
77            .text(&binding)
78            .blod(true)
79            .bg_color(ColorType::Rgb(0,255,0))
80            .color(ColorType::Color256(0xffffff))
81            .build();
82        let mut output_list_builder = OutputListBuilder::new();
83        output_list_builder.add(time_output);
84        $(
85            let text = $data.to_string();
86            let mut text_output_builder: OutputBuilder<'_> = OutputBuilder::new();
87            let text_output: Output<'_> = text_output_builder
88                .text(&text)
89                .blod(true)
90                .color(ColorType::Rgb(0,255,0))
91                .endl(false)
92                .build();
93            output_list_builder.add(text_output);
94        )*
95        output_list_builder.run();
96    }};
97}
98
99#[macro_export]
100macro_rules! print_warning {
101    ($($data:expr),*) => {{
102        use crate::*;
103        let binding: String = format!("[{} => warning]", current_time());
104        let mut time_output_builder: OutputBuilder<'_> = OutputBuilder::new();
105        let time_output: Output<'_> = time_output_builder
106            .text(&binding)
107            .blod(true)
108            .bg_color(ColorType::Rgb(255, 255, 0))
109            .color(ColorType::Color256(0xffffff))
110            .build();
111        let mut output_list_builder = OutputListBuilder::new();
112        output_list_builder.add(time_output);
113        $(
114            let text = $data.to_string();
115            let mut text_output_builder: OutputBuilder<'_> = OutputBuilder::new();
116            let text_output: Output<'_> = text_output_builder
117                .text(&text)
118                .blod(true)
119                .color(ColorType::Rgb(255, 255, 0))
120                .endl(false)
121                .build();
122            output_list_builder.add(text_output);
123        )*
124        output_list_builder.run();
125    }};
126}
127
128#[macro_export]
129macro_rules! print_error {
130    ($($data:expr),*) => {{
131        use crate::*;
132        let binding: String = format!("[{} => error]", current_time());
133        let mut time_output_builder: OutputBuilder<'_> = OutputBuilder::new();
134        let time_output: Output<'_> = time_output_builder
135            .text(&binding)
136            .blod(true)
137            .bg_color(ColorType::Rgb(255,0,0))
138            .color(ColorType::Color256(0xffffff))
139            .build();
140        let mut output_list_builder = OutputListBuilder::new();
141        output_list_builder.add(time_output);
142        $(
143            let text = $data.to_string();
144            let mut text_output_builder: OutputBuilder<'_> = OutputBuilder::new();
145            let text_output: Output<'_> = text_output_builder
146                .text(&text)
147                .blod(true)
148                .color(ColorType::Rgb(255,0,0))
149                .endl(false)
150                .build();
151            output_list_builder.add(text_output);
152        )*
153        output_list_builder.run();
154    }};
155}
156
157#[macro_export]
158macro_rules! println_success {
159    ($($data:expr),*) => {{
160        use crate::*;
161        let binding: String = format!("[{} => success]", current_time());
162        let mut time_output_builder: OutputBuilder<'_> = OutputBuilder::new();
163        let time_output: Output<'_> = time_output_builder
164            .text(&binding)
165            .blod(true)
166            .bg_color(ColorType::Rgb(0,255,0))
167            .color(ColorType::Color256(0xffffff))
168            .build();
169        let mut output_list_builder = OutputListBuilder::new();
170        output_list_builder.add(time_output);
171        $(
172            let text = $data.to_string();
173            let mut text_output_builder: OutputBuilder<'_> = OutputBuilder::new();
174            let text_output: Output<'_> = text_output_builder
175                .text(&text)
176                .blod(true)
177                .color(ColorType::Rgb(0,255,0))
178                .endl(false)
179                .build();
180            output_list_builder.add(text_output);
181        )*
182        let mut text_endl_output_builder: OutputBuilder<'_> = OutputBuilder::new();
183        let text_endl_output: Output<'_> = text_endl_output_builder.text("\n").endl(false).build();
184        output_list_builder.add(text_endl_output);
185        output_list_builder.run();
186    }};
187}
188
189#[macro_export]
190macro_rules! println_warning {
191    ($($data:expr),*) => {{
192        use crate::*;
193        let binding: String = format!("[{} => warning]", current_time());
194        let mut time_output_builder: OutputBuilder<'_> = OutputBuilder::new();
195        let time_output: Output<'_> = time_output_builder
196            .text(&binding)
197            .blod(true)
198            .bg_color(ColorType::Rgb(255, 255, 0))
199            .color(ColorType::Color256(0xffffff))
200            .build();
201        let mut output_list_builder = OutputListBuilder::new();
202        output_list_builder.add(time_output);
203        $(
204            let text = $data.to_string();
205            let mut text_output_builder: OutputBuilder<'_> = OutputBuilder::new();
206            let text_output: Output<'_> = text_output_builder
207                .text(&text)
208                .blod(true)
209                .color(ColorType::Rgb(255, 255, 0))
210                .endl(false)
211                .build();
212            output_list_builder.add(text_output);
213        )*
214        let mut text_endl_output_builder: OutputBuilder<'_> = OutputBuilder::new();
215        let text_endl_output: Output<'_> = text_endl_output_builder.text("\n").endl(false).build();
216        output_list_builder.add(text_endl_output);
217        output_list_builder.run();
218    }};
219}
220
221#[macro_export]
222macro_rules! println_error {
223    ($($data:expr),*) => {{
224        use crate::*;
225        let binding: String = format!("[{} => error]", current_time());
226        let mut time_output_builder: OutputBuilder<'_> = OutputBuilder::new();
227        let time_output: Output<'_> = time_output_builder
228            .text(&binding)
229            .blod(true)
230            .bg_color(ColorType::Rgb(255,0,0))
231            .color(ColorType::Color256(0xffffff))
232            .build();
233        let mut output_list_builder = OutputListBuilder::new();
234        output_list_builder.add(time_output);
235        $(
236            let text = $data.to_string();
237            let mut text_output_builder: OutputBuilder<'_> = OutputBuilder::new();
238            let text_output: Output<'_> = text_output_builder
239                .text(&text)
240                .blod(true)
241                .color(ColorType::Rgb(255,0,0))
242                .endl(false)
243                .build();
244            output_list_builder.add(text_output);
245        )*
246        let mut text_endl_output_builder: OutputBuilder<'_> = OutputBuilder::new();
247        let text_endl_output: Output<'_> = text_endl_output_builder.text("\n").endl(false).build();
248        output_list_builder.add(text_endl_output);
249        output_list_builder.run();
250    }};
251}