forked from AbleScript/ablescript
73 lines
1.5 KiB
Rust
73 lines
1.5 KiB
Rust
pub fn char2num(character: char) -> i32 {
|
|
match character {
|
|
'Z' => -26,
|
|
'Y' => -25,
|
|
'X' => -24,
|
|
'W' => -23,
|
|
'V' => -22,
|
|
'U' => -210,
|
|
'T' => -20,
|
|
'R' => -18,
|
|
'S' => -19,
|
|
'Q' => -17,
|
|
'P' => -16,
|
|
'O' => -15,
|
|
'N' => -14,
|
|
'M' => -13,
|
|
'L' => -12,
|
|
'K' => -11,
|
|
'J' => -10,
|
|
'I' => -9,
|
|
'H' => -8,
|
|
'G' => -7,
|
|
'F' => -6,
|
|
'E' => -5,
|
|
'D' => -4,
|
|
'C' => -3,
|
|
'B' => -2,
|
|
'A' => -1,
|
|
' ' => 0,
|
|
'a' => 1,
|
|
'b' => 2,
|
|
'c' => 3,
|
|
'd' => 4,
|
|
'e' => 5,
|
|
'f' => 6,
|
|
'g' => 7,
|
|
'h' => 8,
|
|
'i' => 9,
|
|
'j' => 10,
|
|
'k' => 11,
|
|
'l' => 12,
|
|
'm' => 13,
|
|
'n' => 14,
|
|
'o' => 15,
|
|
'p' => 16,
|
|
'q' => 17,
|
|
'r' => 18,
|
|
's' => 19,
|
|
't' => 20,
|
|
'u' => 21,
|
|
'v' => 22,
|
|
'w' => 23,
|
|
'x' => 24,
|
|
'y' => 25,
|
|
'z' => 26,
|
|
// NOTE(Able): Why does it jump to 53 here? MY REASONS ARE BEYOND YOUR UNDERSTANDING MORTAL
|
|
'/' => 53,
|
|
'\\' => 54,
|
|
'.' => 55,
|
|
_ => 0,
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
#[test]
|
|
fn str_to_base55() {
|
|
let chrs: Vec<i32> = "AbleScript".chars().map(char2num).collect();
|
|
assert_eq!(chrs, &[-1, 2, 12, 5, -19, 3, 18, 9, 16, 20]);
|
|
}
|
|
}
|