rhd/src/colormap.rs

89 lines
2.8 KiB
Rust

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