#[doc(hidden)]
pub mod internal;
#[rustfmt::skip]
macro_rules! make_print_macro {
($dollar:tt $name:ident, $newline:literal, $colour:ident, $output:ident) => {
#[macro_export]
macro_rules! $name {
() => {
$crate::internal::write::<_, $newline>(
std::io::$output().lock(),
stringify!($output),
$crate::internal::Colour::$colour,
None
)
};
($dollar($dollar args:tt)*) => {
$crate::internal::write::<_, $newline>(
std::io::$output().lock(),
stringify!($output),
$crate::internal::Colour::$colour,
Some(format_args!($dollar($dollar args)*))
)
};
}
};
}
make_print_macro!($ black, false, Black, stdout);
make_print_macro!($ e_black, false, Black, stderr);
make_print_macro!($ black_ln, true, Black, stdout);
make_print_macro!($ e_black_ln, true, Black, stderr);
make_print_macro!($ dark_red, false, DarkRed, stdout);
make_print_macro!($ e_dark_red, false, DarkRed, stderr);
make_print_macro!($ dark_red_ln, true, DarkRed, stdout);
make_print_macro!($ e_dark_red_ln, true, DarkRed, stderr);
make_print_macro!($ dark_green, false, DarkGreen, stdout);
make_print_macro!($ e_dark_green, false, DarkGreen, stderr);
make_print_macro!($ dark_green_ln, true, DarkGreen, stdout);
make_print_macro!($ e_dark_green_ln, true, DarkGreen, stderr);
make_print_macro!($ dark_yellow, false, DarkYellow, stdout);
make_print_macro!($ e_dark_yellow, false, DarkYellow, stderr);
make_print_macro!($ dark_yellow_ln, true, DarkYellow, stdout);
make_print_macro!($ e_dark_yellow_ln, true, DarkYellow, stderr);
make_print_macro!($ dark_blue, false, DarkBlue, stdout);
make_print_macro!($ e_dark_blue, false, DarkBlue, stderr);
make_print_macro!($ dark_blue_ln, true, DarkBlue, stdout);
make_print_macro!($ e_dark_blue_ln, true, DarkBlue, stderr);
make_print_macro!($ dark_magenta, false, DarkMagenta, stdout);
make_print_macro!($ e_dark_magenta, false, DarkMagenta, stderr);
make_print_macro!($ dark_magenta_ln, true, DarkMagenta, stdout);
make_print_macro!($ e_dark_magenta_ln, true, DarkMagenta, stderr);
make_print_macro!($ dark_cyan, false, DarkCyan, stdout);
make_print_macro!($ e_dark_cyan, false, DarkCyan, stderr);
make_print_macro!($ dark_cyan_ln, true, DarkCyan, stdout);
make_print_macro!($ e_dark_cyan_ln, true, DarkCyan, stderr);
make_print_macro!($ grey, false, Grey, stdout);
make_print_macro!($ e_grey, false, Grey, stderr);
make_print_macro!($ grey_ln, true, Grey, stdout);
make_print_macro!($ e_grey_ln, true, Grey, stderr);
make_print_macro!($ dark_grey, false, DarkGrey, stdout);
make_print_macro!($ e_dark_grey, false, DarkGrey, stderr);
make_print_macro!($ dark_grey_ln, true, DarkGrey, stdout);
make_print_macro!($ e_dark_grey_ln, true, DarkGrey, stderr);
make_print_macro!($ red, false, Red, stdout);
make_print_macro!($ e_red, false, Red, stderr);
make_print_macro!($ red_ln, true, Red, stdout);
make_print_macro!($ e_red_ln, true, Red, stderr);
make_print_macro!($ green, false, Green, stdout);
make_print_macro!($ e_green, false, Green, stderr);
make_print_macro!($ green_ln, true, Green, stdout);
make_print_macro!($ e_green_ln, true, Green, stderr);
make_print_macro!($ yellow, false, Yellow, stdout);
make_print_macro!($ e_yellow, false, Yellow, stderr);
make_print_macro!($ yellow_ln, true, Yellow, stdout);
make_print_macro!($ e_yellow_ln, true, Yellow, stderr);
make_print_macro!($ blue, false, Blue, stdout);
make_print_macro!($ e_blue, false, Blue, stderr);
make_print_macro!($ blue_ln, true, Blue, stdout);
make_print_macro!($ e_blue_ln, true, Blue, stderr);
make_print_macro!($ magenta, false, Magenta, stdout);
make_print_macro!($ e_magenta, false, Magenta, stderr);
make_print_macro!($ magenta_ln, true, Magenta, stdout);
make_print_macro!($ e_magenta_ln, true, Magenta, stderr);
make_print_macro!($ cyan, false, Cyan, stdout);
make_print_macro!($ e_cyan, false, Cyan, stderr);
make_print_macro!($ cyan_ln, true, Cyan, stdout);
make_print_macro!($ e_cyan_ln, true, Cyan, stderr);
make_print_macro!($ white, false, White, stdout);
make_print_macro!($ e_white, false, White, stderr);
make_print_macro!($ white_ln, true, White, stdout);
make_print_macro!($ e_white_ln, true, White, stderr);
make_print_macro!($ prnt, false, Reset, stdout);
make_print_macro!($ e_prnt, false, Reset, stderr);
make_print_macro!($ prnt_ln, true, Reset, stdout);
make_print_macro!($ e_prnt_ln, true, Reset, stderr);
#[rustfmt::skip]
macro_rules! make_write_macro {
($dollar:tt $name:ident, $newline:literal, $colour:ident) => {
#[macro_export]
macro_rules! $name {
($dollar dst:expr, $dollar($dollar args:tt)*) => {
{
use $crate::internal::QueueableCommand;
$dollar dst.queue($crate::internal::SetForegroundColor($crate::internal::Colour::$colour))
.map(|_| ())
.and_then(|_| {
$dollar dst.write_fmt(format_args!($dollar($dollar args)*))
})
.and_then(|_| {
if $newline {
$dollar dst.write(b"\n").map(|_| ())
} else {
Ok(())
}
})
.and_then(|_| {
$dollar dst.queue($crate::internal::SetForegroundColor($crate::internal::Colour::Reset)).map(|_| ())
})
.and_then(|_| {
$dollar dst.flush()
})
}
}
}
};
}
make_write_macro!($ write_black, false, Black);
make_write_macro!($ write_black_ln, true, Black);
make_write_macro!($ write_dark_red, false, DarkRed);
make_write_macro!($ write_dark_red_ln, true, DarkRed);
make_write_macro!($ write_dark_green, false, DarkGreen);
make_write_macro!($ write_dark_green_ln, true, DarkGreen);
make_write_macro!($ write_dark_yellow, false, DarkYellow);
make_write_macro!($ write_dark_yellow_ln, true, DarkYellow);
make_write_macro!($ write_dark_blue, false, DarkBlue);
make_write_macro!($ write_dark_blue_ln, true, DarkBlue);
make_write_macro!($ write_dark_magenta, false, DarkMagenta);
make_write_macro!($ write_dark_magenta_ln, true, DarkMagenta);
make_write_macro!($ write_dark_cyan, false, DarkCyan);
make_write_macro!($ write_dark_cyan_ln, true, DarkCyan);
make_write_macro!($ write_grey, false, Grey);
make_write_macro!($ write_grey_ln, true, Grey);
make_write_macro!($ write_dark_grey, false, DarkGrey);
make_write_macro!($ write_dark_grey_ln, true, DarkGrey);
make_write_macro!($ write_red, false, Red);
make_write_macro!($ write_red_ln, true, Red);
make_write_macro!($ write_green, false, Green);
make_write_macro!($ write_green_ln, true, Green);
make_write_macro!($ write_yellow, false, Yellow);
make_write_macro!($ write_yellow_ln, true, Yellow);
make_write_macro!($ write_blue, false, Blue);
make_write_macro!($ write_blue_ln, true, Blue);
make_write_macro!($ write_magenta, false, Magenta);
make_write_macro!($ write_magenta_ln, true, Magenta);
make_write_macro!($ write_cyan, false, Cyan);
make_write_macro!($ write_cyan_ln, true, Cyan);
make_write_macro!($ write_white, false, White);
make_write_macro!($ write_white_ln, true, White);
make_write_macro!($ wrte, false, Reset);
make_write_macro!($ wrte_ln, true, Reset);