1use alloc::string::String;
2
3const B256: [&str; 256] = [
4 "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
5 "t", "u", "v", "x", "y", "z", "æ", "ø", "0", "1", "2", "3", "4", "A", "B", "C", "D", "E", "F",
6 "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "W", "X", "Y", "Z",
7 "Æ", "Ø", "5", "6", "7", "8", "9", "α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ", "λ", "μ",
8 "ν", "ξ", "π", "ρ", "σ", "τ", "φ", "χ", "ψ", "ω", "Γ", "Δ", "Θ", "Λ", "Ξ", "Π", "Σ", "Φ", "Ψ",
9 "Ω", "Б", "Д", "Ж", "З", "И", "Л", "П", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Э", "Ю", "Я", "б", "д",
10 "ж", "з", "и", "л", "п", "ц", "ч", "ш", "щ", "ъ", "ы", "э", "ю", "я", "Ա", "Բ", "Գ", "Դ", "Ե",
11 "Զ", "Է", "Ը", "Թ", "Ժ", "Ի", "Խ", "Ծ", "Կ", "Հ", "Ձ", "Ղ", "Ճ", "Մ", "Յ", "Ն", "Շ", "Ո", "Չ",
12 "Պ", "Ջ", "Վ", "Ր", "Ց", "Ւ", "Ք", "Ֆ", "ᚠ", "ᚢ", "ᚦ", "ᚱ", "ᚹ", "ᚺ", "ᚾ", "ᛈ", "ᛇ", "ᛉ", "ᛊ",
13 "ᛏ", "ᛒ", "ᛖ", "ᛗ", "ᛟ", "イ", "ウ", "オ", "カ", "キ", "ケ", "サ", "シ", "ス", "セ", "タ", "チ", "テ", "ト",
14 "ナ", "ヌ", "ネ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ", "モ", "ヤ", "ラ", "リ", "ル", "レ", "ワ", "𐑐",
15 "𐑑", "𐑒", "𐑔", "𐑕", "𐑗", "𐑙", "𐑳", "𐑶", "𐑸", "𐑹", "𐑺", "𐑻", "𐑽", "𐑾", "𐑿", "᱑", "᱕", "᱘", "᱙",
16 "ᱚ", "ᱝ", "ᱟ", "ᱣ", "ᱦ", "ᱨ", "ᱬ", "ᱭ", "ᱰ", "ᱳ", "ᱶ", "ᱷ", "𐌳", "𐌸", "𐌾", "𐐀", "𐐁", "𐐂", "𐐆",
17 "𐐇", "𐐈", "𐐉", "𐐊", "𐐋", "𐐌", "𐐍", "𐐎", "𐐏",
18];
19
20pub fn b256_rep(byte: u8) -> &'static str {
22 B256[byte as usize]
23}
24
25pub fn prettyb256rep(data: &[u8]) -> String {
27 let mut out = String::from("<");
28 for byte in data {
29 out.push_str(b256_rep(*byte));
30 }
31 out.push('>');
32 out
33}
34
35#[cfg(test)]
36mod tests {
37 use super::*;
38
39 #[test]
40 fn prettyb256rep_matches_upstream_map_edges() {
41 assert_eq!(prettyb256rep(&[0x00, 0x1a, 0x1b, 0x3f]), "<aø09>");
42 assert_eq!(prettyb256rep(&[0x40, 0x5f, 0xff]), "<αΩ𐐏>");
43 }
44
45 #[test]
46 fn b256_rep_covers_all_bytes() {
47 for byte in 0u8..=255 {
48 assert!(!b256_rep(byte).is_empty());
49 }
50 }
51}