diff --git a/Cargo.toml b/Cargo.toml index 917fe39..eb0e96f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rust_util" -version = "0.6.43" +version = "0.6.44" authors = ["Hatter Jiang "] edition = "2018" description = "Hatter's Rust Util" diff --git a/src/lib.rs b/src/lib.rs index 586943d..43ef636 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -40,6 +40,12 @@ pub mod util_runtime; #[macro_export] macro_rules! failure { ($($arg:tt)+) => ( rust_util::util_msg::print_error(&format!($($arg)+)); ) } +#[macro_export] macro_rules! println_ex { + ($($arg:tt)+) => ( rust_util::util_msg::print_ex(&format!($($arg)+), true); ) +} +#[macro_export] macro_rules! print_ex { + ($($arg:tt)+) => ( rust_util::util_msg::print_ex(&format!($($arg)+), false); ) +} #[macro_export] macro_rules! debugging { ($($arg:tt)+) => ( rust_util::util_msg::when(rust_util::util_msg::MessageType::DEBUG, || { rust_util::util_msg::print_debug(&format!($($arg)+)) diff --git a/src/util_msg.rs b/src/util_msg.rs index 26bf36c..55b22bd 100644 --- a/src/util_msg.rs +++ b/src/util_msg.rs @@ -14,6 +14,10 @@ pub fn set_logger_std_out(is_std_out: bool) { *std_out = is_std_out; } +pub fn get_logger_std_out() -> bool { + *LOGGER_TO_STDOUT.read().unwrap() +} + #[allow(clippy::upper_case_acronyms)] #[derive(Clone, Copy)] pub enum MessageType { DEBUG, INFO, OK, WARN, ERROR } @@ -101,9 +105,7 @@ pub fn print_color_and_flush(color: Option, is_bold: bool, m } pub fn print_message_ex(color: Option, h: &str, message: &str) { - let is_std_out = { - *LOGGER_TO_STDOUT.read().unwrap() - }; + let is_std_out = get_logger_std_out(); let mut lock = PRINT_MESSAGE_LOCK.lock().unwrap(); print_color(is_std_out, color, true, h); if is_std_out { @@ -114,6 +116,22 @@ pub fn print_message_ex(color: Option, h: &str, message: &st *lock = (); } +pub fn print_ex(message: &str, new_line: bool) { + if get_logger_std_out() { + if new_line { + println!("{}", message) + } else { + print!("{}", message) + } + } else { + if new_line { + eprintln!("{}", message) + } else { + eprint!("{}", message) + } + } +} + pub fn print_ok(message: &str) { print_message(MessageType::OK, message); } pub fn print_warn(message: &str) { print_message(MessageType::WARN, message); }