rhd/src/colormap.rs

91 lines
2.7 KiB
Rust

extern crate termion;
use termion::color;
const COLOR_RESET: color::Fg<color::Reset> = color::Fg(color::Reset);
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);
const COLOR_OTHER: color::Fg<color::Yellow> = color::Fg(color::Yellow);
pub fn map_u8_to_color(data: u8) -> String {
if super::isatty() {
match data {
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),
_ => format!(
"{}{:02x}{}",
COLOR_OTHER,
data,
COLOR_RESET
),
}
} else {
format!("{:02x}", data)
}
}
pub fn map_char_to_color(data: u8) -> String {
if super::isatty() {
match data {
32..=47 => format!(
"{}{}{}",
COLOR_SYMBOLS,
(data as char),
COLOR_RESET
),
48..=57 => format!(
"{}{}{}",
COLOR_NUMBERS,
(data as char),
COLOR_RESET
),
58..=64 => format!(
"{}{}{}",
COLOR_SYMBOLS,
(data as char),
COLOR_RESET
),
65..=90 => format!(
"{}{}{}",
COLOR_TEXT,
(data as char),
COLOR_RESET
),
91..=96 => format!(
"{}{}{}",
COLOR_SYMBOLS,
(data as char),
COLOR_RESET
),
97..=122 => format!(
"{}{}{}",
COLOR_TEXT,
(data as char),
COLOR_RESET
),
123..=126 => format!(
"{}{}{}",
COLOR_SYMBOLS,
(data as char),
COLOR_RESET
),
_ => format!(
"{}.{}",
COLOR_SYMBOLS,
COLOR_RESET
),
}
} else {
match data {
32..=126 => format!("{}", (data as char)),
_ => ".".to_string(),
}
}
}