list_alphabets/
list_alphabets.rs

1use base_d::AlphabetsConfig;
2
3fn main() {
4    let config = AlphabetsConfig::load_default().unwrap();
5    
6    println!("Available alphabets:\n");
7    
8    for (name, alphabet_config) in config.alphabets.iter() {
9        let (char_count, preview) = match alphabet_config.mode {
10            base_d::EncodingMode::ByteRange => {
11                if let Some(start) = alphabet_config.start_codepoint {
12                    let preview_chars: String = (0..10)
13                        .filter_map(|i| std::char::from_u32(start + i))
14                        .collect();
15                    (256, preview_chars)
16                } else {
17                    (256, String::from("(invalid)"))
18                }
19            }
20            _ => {
21                let count = alphabet_config.chars.chars().count();
22                let preview: String = alphabet_config.chars.chars().take(10).collect();
23                (count, preview)
24            }
25        };
26        let mode_str = match alphabet_config.mode {
27            base_d::EncodingMode::BaseConversion => "math",
28            base_d::EncodingMode::Chunked => "chunk",
29            base_d::EncodingMode::ByteRange => "range",
30        };
31        println!("  {} (base-{}, {}): {}...", name, char_count, mode_str, preview);
32    }
33}