#[cfg(feature = "input")]
use std::io::{stdin, stdout, Write};
#[cfg(feature = "input")]
#[doc(hidden)]
pub fn _read_input(prompt: String) -> String {
print!("{}", prompt);
let r = stdout().flush();
if r.is_err() {
panic!("Error flushing output: {}", r.unwrap_err());
}
let mut buffer = String::new();
let r2 = stdin().read_line(&mut buffer);
if r2.is_err() {
panic!("Error in reading input: {}", r.unwrap_err());
}
buffer.replace(['\n', '\r'], "")
}
#[cfg(feature = "input")]
#[doc(hidden)]
pub fn _yn_prompt(p: String) -> bool {
let input = _read_input(format!("{} [Y/n]: ", p));
return match input.to_ascii_lowercase().as_str() {
"n" | "no" => false,
_ => true, }
}
#[cfg(feature = "input")]
#[macro_export]
macro_rules! read_input {
() => { better_term::input::_read_input(format!(""))};
($($arg:tt)*) => { better_term::input::_read_input(format!("{}", format_args!($($arg)*)))};
}
#[cfg(feature = "input")]
#[macro_export]
macro_rules! yesno_prompt {
() => { better_term::input::_yn_prompt("")};
($($arg:tt)*) => { better_term::input::_yn_prompt(format!("{}", format_args!($($arg)*)))};
}