extern crate termion; use termion::color; const COLOR_RESET: color::Fg = color::Fg(color::Reset); const COLOR_SYMBOLS: color::Fg = color::Fg(color::LightGreen); const COLOR_TEXT: color::Fg = color::Fg(color::Cyan); const COLOR_NUMBERS: color::Fg = color::Fg(color::LightBlue); const COLOR_OTHER: color::Fg = 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(), } } }