1pub mod colors;
33pub mod printer;
34
35pub use colors::Color;
36pub use printer::ChromaPrint;
37
38#[macro_export]
40macro_rules! print_success {
42 ($($arg:tt)*) => {
43 println!("{}", $crate::ChromaPrint::success(&format!($($arg)*)))
44 };
45}
46
47#[macro_export]
48macro_rules! print_info {
50 ($($arg:tt)*) => {
51 println!("{}", $crate::ChromaPrint::info(&format!($($arg)*)))
52 };
53}
54
55#[macro_export]
56macro_rules! print_warn {
58 ($($arg:tt)*) => {
59 println!("{}", $crate::ChromaPrint::warn(&format!($($arg)*)))
60 };
61}
62
63#[macro_export]
64macro_rules! print_error {
66 ($($arg:tt)*) => {
67 eprintln!("{}", $crate::ChromaPrint::error(&format!($($arg)*)))
68 };
69}
70
71#[cfg(test)]
72mod tests {
73 use super::*;
74
75 const RESET: &str = "\x1b[0m";
76
77 #[test]
78 fn test_color_values() {
79 assert_eq!(Color::Green.value(), "\x1b[32m");
80 assert_eq!(Color::Yellow.value(), "\x1b[33m");
81 assert_eq!(Color::Cyan.value(), "\x1b[36m");
82 assert_eq!(Color::Red.value(), "\x1b[31m");
83 assert_eq!(Color::Reset.value(), "\x1b[0m");
84 }
85
86 #[test]
87 fn test_success_formatting() {
88 let msg: &str = "success";
89 assert_eq!(
90 ChromaPrint::success(msg),
91 format!("\x1b[32msuccess{}", RESET)
92 );
93 }
94
95 #[test]
96 fn test_error_formatting() {
97 let msg: &str = "error";
98 assert_eq!(ChromaPrint::error(msg), format!("\x1b[31merror{}", RESET));
99 }
100
101 #[test]
102 fn test_info_formatting() {
103 let msg = "info";
104 assert_eq!(ChromaPrint::info(msg), format!("\x1b[36minfo{}", RESET));
105 }
106
107 #[test]
108 fn test_warn_formatting() {
109 let msg: &str = "warning";
110 assert_eq!(ChromaPrint::warn(msg), format!("\x1b[33mwarning{}", RESET));
111 }
112}