1use colored::Colorize;
2use radix_fmt::radix;
3
4use crate::{table, verification};
5
6pub fn to_char(nums: Option<Vec<String>>, base: u8, ignore_specials: bool) {
7 verification::check_base(base);
8
9 let nums = match nums {
10 Some(n) => n,
11 None => verification::get_input("nums to translate")
12 .split(" ")
13 .map(|s| s.to_string())
14 .collect(),
15 };
16
17 for num in nums {
18 let char_num = verification::get_number(num, base);
19 verification::under_128(char_num);
20 let c = table::get_char(char_num, !ignore_specials);
21 if c.1 {
22 print!("{}", c.0.blue().italic());
23 } else {
24 print!("{}", c.0);
25 }
26 }
27}
28
29pub fn to_num(chars: Option<Vec<String>>, base: u8) {
30 verification::check_base(base);
31
32 let chars = match chars {
33 Some(n) => n,
34 None => verification::get_input("chars to translate")
35 .split(" ")
36 .map(|s| s.to_string())
37 .collect(),
38 };
39
40 for c in chars.join(" ").chars() {
41 let mut string = format!("{:#}", radix(c as u32, base));
42
43 let char_num = verification::get_number(string.clone(), base);
44 verification::under_128(char_num);
45 let c = table::get_char(char_num, true);
46 if c.1 || c.0 == " " {
47 string = format!("{}", string.blue().italic());
48 }
49 print!("{} ", string);
50 }
51}