extern crate owo_colors;
#[macro_export]
macro_rules! brackets {
($msg:expr) => {
format!("{}{}{}", '[', $msg, ']')
};
($level:expr, $bracket_brightness:expr) => {
match $bracket_brightness {
0 => format!(
"{}{}{}",
'['.black().dimmed().bold(),
$level,
']'.black().dimmed().bold()
),
1 => format!(
"{}{}{}",
'['.bright_black().bold(),
$level,
']'.bright_black().bold()
),
2 => format!("{}{}{}", '['.white().bold(), $level, ']'.white().bold()),
_ => format!("{}{}{}", '[', $level, ']'),
}
};
}
#[macro_export]
macro_rules! prettyln {
($level:expr, $msg:expr, $bracket_brightness:expr) => {
println!("{} {}", farve::brackets!($level, $bracket_brightness), $msg)
};
($level:expr, $msg:expr) => {
println!("{} {}", farve::brackets!($level), $msg)
};
($level:expr) => {
println!("{} {}", farve::brackets!($level))
};
}
#[macro_export]
macro_rules! eprettyln {
($level:expr, $msg:expr, $bracket_brightness:expr) => {
eprintln!("{} {}", farve::brackets!($level, $bracket_brightness), $msg)
};
($level:expr, $msg:expr) => {
eprintln!("{} {}", farve::brackets!($level), $msg)
};
($level:expr) => {
eprintln!("{} {}", farve::brackets!($level))
};
}
#[macro_export]
macro_rules! farve {
($func:ident, $prefix:expr, $bracket_brightness:expr) => {
pub fn $func<S: std::fmt::Display>(msg: S) {
farve::prettyln!($prefix, msg, $bracket_brightness)
}
};
($func:ident, $prefix:expr) => {
pub fn $func<S: std::fmt::Display>(msg: S) {
farve::prettyln!($prefix, msg)
}
};
($func:ident) => {
pub fn $func<S: std::fmt::Display>(msg: S) {
farve::prettyln!(stringify!($func), msg)
}
};
}
#[macro_export]
macro_rules! efarve {
($func:ident, $prefix:expr, $bracket_brightness:expr) => {
pub fn $func<S: std::fmt::Display>(msg: S) {
farve::eprettyln!($prefix, msg, $bracket_brightness)
}
};
($func:ident, $prefix:expr) => {
pub fn $func<S: std::fmt::Display>(msg: S) {
farve::eprettyln!($prefix, msg)
}
};
($func:ident) => {
pub fn $func<S: std::fmt::Display>(msg: S) {
farve::eprettyln!(stringify!($func), msg)
}
};
}