ascii_cli/
convert.rs

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}