2022-12-12 16:54:20 +01:00
|
|
|
extern crate termion;
|
|
|
|
|
|
|
|
use termion::color;
|
|
|
|
|
2023-01-06 18:44:34 +01:00
|
|
|
const COLOR_RESET: color::Fg<color::Reset> = color::Fg(color::Reset);
|
2022-12-12 17:39:41 +01:00
|
|
|
const COLOR_SYMBOLS: color::Fg<color::LightGreen> = color::Fg(color::LightGreen);
|
|
|
|
const COLOR_TEXT: color::Fg<color::Cyan> = color::Fg(color::Cyan);
|
|
|
|
const COLOR_NUMBERS: color::Fg<color::LightBlue> = color::Fg(color::LightBlue);
|
2023-01-06 18:44:34 +01:00
|
|
|
const COLOR_OTHER: color::Fg<color::Yellow> = color::Fg(color::Yellow);
|
2022-12-12 17:39:41 +01:00
|
|
|
|
2022-12-12 16:54:20 +01:00
|
|
|
pub fn map_u8_to_color(data: u8) -> String {
|
2022-12-16 13:54:21 +01:00
|
|
|
if super::isatty() {
|
|
|
|
match data {
|
2023-01-06 18:44:34 +01:00
|
|
|
32..=47 => format!("{}{:02x}{}", COLOR_SYMBOLS, data, COLOR_RESET),
|
|
|
|
48..=57 => format!("{}{:02x}{}", COLOR_NUMBERS, data, COLOR_RESET),
|
|
|
|
58..=64 => format!("{}{:02x}{}", COLOR_SYMBOLS, data, COLOR_RESET),
|
|
|
|
65..=90 => format!("{}{:02x}{}", COLOR_TEXT, data, COLOR_RESET),
|
|
|
|
91..=96 => format!("{}{:02x}{}", COLOR_SYMBOLS, data, COLOR_RESET),
|
|
|
|
97..=122 => format!("{}{:02x}{}", COLOR_TEXT, data, COLOR_RESET),
|
|
|
|
123..=126 => format!("{}{:02x}{}", COLOR_SYMBOLS, data, COLOR_RESET),
|
2022-12-16 13:54:21 +01:00
|
|
|
_ => format!(
|
|
|
|
"{}{:02x}{}",
|
2023-01-06 18:44:34 +01:00
|
|
|
COLOR_OTHER,
|
2022-12-16 13:54:21 +01:00
|
|
|
data,
|
2023-01-06 18:44:34 +01:00
|
|
|
COLOR_RESET
|
2022-12-16 13:54:21 +01:00
|
|
|
),
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
format!("{:02x}", data)
|
2022-12-12 16:54:20 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn map_char_to_color(data: u8) -> String {
|
2022-12-16 13:54:21 +01:00
|
|
|
if super::isatty() {
|
|
|
|
match data {
|
|
|
|
32..=47 => format!(
|
|
|
|
"{}{}{}",
|
|
|
|
COLOR_SYMBOLS,
|
|
|
|
(data as char),
|
2023-01-06 18:44:34 +01:00
|
|
|
COLOR_RESET
|
2022-12-16 13:54:21 +01:00
|
|
|
),
|
|
|
|
48..=57 => format!(
|
|
|
|
"{}{}{}",
|
|
|
|
COLOR_NUMBERS,
|
|
|
|
(data as char),
|
2023-01-06 18:44:34 +01:00
|
|
|
COLOR_RESET
|
2022-12-16 13:54:21 +01:00
|
|
|
),
|
|
|
|
58..=64 => format!(
|
|
|
|
"{}{}{}",
|
|
|
|
COLOR_SYMBOLS,
|
|
|
|
(data as char),
|
2023-01-06 18:44:34 +01:00
|
|
|
COLOR_RESET
|
2022-12-16 13:54:21 +01:00
|
|
|
),
|
|
|
|
65..=90 => format!(
|
|
|
|
"{}{}{}",
|
|
|
|
COLOR_TEXT,
|
|
|
|
(data as char),
|
2023-01-06 18:44:34 +01:00
|
|
|
COLOR_RESET
|
2022-12-16 13:54:21 +01:00
|
|
|
),
|
|
|
|
91..=96 => format!(
|
|
|
|
"{}{}{}",
|
|
|
|
COLOR_SYMBOLS,
|
|
|
|
(data as char),
|
2023-01-06 18:44:34 +01:00
|
|
|
COLOR_RESET
|
2022-12-16 13:54:21 +01:00
|
|
|
),
|
|
|
|
97..=122 => format!(
|
|
|
|
"{}{}{}",
|
|
|
|
COLOR_TEXT,
|
|
|
|
(data as char),
|
2023-01-06 18:44:34 +01:00
|
|
|
COLOR_RESET
|
2022-12-16 13:54:21 +01:00
|
|
|
),
|
|
|
|
123..=126 => format!(
|
|
|
|
"{}{}{}",
|
|
|
|
COLOR_SYMBOLS,
|
|
|
|
(data as char),
|
2023-01-06 18:44:34 +01:00
|
|
|
COLOR_RESET
|
2022-12-16 13:54:21 +01:00
|
|
|
),
|
|
|
|
_ => format!(
|
|
|
|
"{}.{}",
|
2023-01-06 18:44:34 +01:00
|
|
|
COLOR_SYMBOLS,
|
|
|
|
COLOR_RESET
|
2022-12-16 13:54:21 +01:00
|
|
|
),
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
match data {
|
|
|
|
32..=126 => format!("{}", (data as char)),
|
|
|
|
_ => ".".to_string(),
|
|
|
|
}
|
2022-12-12 16:54:20 +01:00
|
|
|
}
|
|
|
|
}
|