mod constants {
pub const SIGN_A: char = '𐎠';
pub const SIGN_I: char = '𐎡';
pub const SIGN_U: char = '𐎢';
pub const SIGN_KA: char = '𐎣';
pub const SIGN_KU: char = '𐎤';
pub const SIGN_GA: char = '𐎥';
pub const SIGN_GU: char = '𐎦';
pub const SIGN_XA: char = '𐎧';
pub const SIGN_CA: char = '𐎨';
pub const SIGN_JA: char = '𐎩';
pub const SIGN_JI: char = '𐎪';
pub const SIGN_TA: char = '𐎫';
pub const SIGN_TU: char = '𐎬';
pub const SIGN_DA: char = '𐎭';
pub const SIGN_DI: char = '𐎮';
pub const SIGN_DU: char = '𐎯';
pub const SIGN_THA: char = '𐎰';
pub const SIGN_PA: char = '𐎱';
pub const SIGN_BA: char = '𐎲';
pub const SIGN_FA: char = '𐎳';
pub const SIGN_NA: char = '𐎴';
pub const SIGN_NU: char = '𐎵';
pub const SIGN_MA: char = '𐎶';
pub const SIGN_MI: char = '𐎷';
pub const SIGN_MU: char = '𐎸';
pub const SIGN_YA: char = '𐎹';
pub const SIGN_VA: char = '𐎺';
pub const SIGN_VI: char = '𐎻';
pub const SIGN_RA: char = '𐎼';
pub const SIGN_RU: char = '𐎽';
pub const SIGN_LA: char = '𐎾';
pub const SIGN_SA: char = '𐎿';
pub const SIGN_ZA: char = '𐏀';
pub const SIGN_SHA: char = '𐏁';
pub const SIGN_SSA: char = '𐏂';
pub const SIGN_HA: char = '𐏃';
pub const SIGN_AURAMAZDAA: char = '𐏈';
pub const SIGN_AURAMAZDAA_DASH_2: char = '𐏉';
pub const SIGN_AURAMAZDAAHA: char = '𐏊';
pub const SIGN_XSHAAYATHIYA: char = '𐏋';
pub const SIGN_DAHYAAUSH: char = '𐏌';
pub const SIGN_DAHYAAUSH_DASH_2: char = '𐏍';
pub const SIGN_BAGA: char = '𐏎';
pub const SIGN_BUUMISH: char = '𐏏';
pub const WORD_DIVIDER: char = '𐏐';
pub const NUMBER_ONE: char = '𐏑';
pub const NUMBER_TWO: char = '𐏒';
pub const NUMBER_TEN: char = '𐏓';
pub const NUMBER_TWENTY: char = '𐏔';
pub const NUMBER_HUNDRED: char = '𐏕';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum OldPersian {
SignA,
SignI,
SignU,
SignKa,
SignKu,
SignGa,
SignGu,
SignXa,
SignCa,
SignJa,
SignJi,
SignTa,
SignTu,
SignDa,
SignDi,
SignDu,
SignTha,
SignPa,
SignBa,
SignFa,
SignNa,
SignNu,
SignMa,
SignMi,
SignMu,
SignYa,
SignVa,
SignVi,
SignRa,
SignRu,
SignLa,
SignSa,
SignZa,
SignSha,
SignSsa,
SignHa,
SignAuramazdaa,
SignAuramazdaaDash2,
SignAuramazdaaha,
SignXshaayathiya,
SignDahyaaush,
SignDahyaaushDash2,
SignBaga,
SignBuumish,
WordDivider,
NumberOne,
NumberTwo,
NumberTen,
NumberTwenty,
NumberHundred,
}
impl Into<char> for OldPersian {
fn into(self) -> char {
use constants::*;
match self {
OldPersian::SignA => SIGN_A,
OldPersian::SignI => SIGN_I,
OldPersian::SignU => SIGN_U,
OldPersian::SignKa => SIGN_KA,
OldPersian::SignKu => SIGN_KU,
OldPersian::SignGa => SIGN_GA,
OldPersian::SignGu => SIGN_GU,
OldPersian::SignXa => SIGN_XA,
OldPersian::SignCa => SIGN_CA,
OldPersian::SignJa => SIGN_JA,
OldPersian::SignJi => SIGN_JI,
OldPersian::SignTa => SIGN_TA,
OldPersian::SignTu => SIGN_TU,
OldPersian::SignDa => SIGN_DA,
OldPersian::SignDi => SIGN_DI,
OldPersian::SignDu => SIGN_DU,
OldPersian::SignTha => SIGN_THA,
OldPersian::SignPa => SIGN_PA,
OldPersian::SignBa => SIGN_BA,
OldPersian::SignFa => SIGN_FA,
OldPersian::SignNa => SIGN_NA,
OldPersian::SignNu => SIGN_NU,
OldPersian::SignMa => SIGN_MA,
OldPersian::SignMi => SIGN_MI,
OldPersian::SignMu => SIGN_MU,
OldPersian::SignYa => SIGN_YA,
OldPersian::SignVa => SIGN_VA,
OldPersian::SignVi => SIGN_VI,
OldPersian::SignRa => SIGN_RA,
OldPersian::SignRu => SIGN_RU,
OldPersian::SignLa => SIGN_LA,
OldPersian::SignSa => SIGN_SA,
OldPersian::SignZa => SIGN_ZA,
OldPersian::SignSha => SIGN_SHA,
OldPersian::SignSsa => SIGN_SSA,
OldPersian::SignHa => SIGN_HA,
OldPersian::SignAuramazdaa => SIGN_AURAMAZDAA,
OldPersian::SignAuramazdaaDash2 => SIGN_AURAMAZDAA_DASH_2,
OldPersian::SignAuramazdaaha => SIGN_AURAMAZDAAHA,
OldPersian::SignXshaayathiya => SIGN_XSHAAYATHIYA,
OldPersian::SignDahyaaush => SIGN_DAHYAAUSH,
OldPersian::SignDahyaaushDash2 => SIGN_DAHYAAUSH_DASH_2,
OldPersian::SignBaga => SIGN_BAGA,
OldPersian::SignBuumish => SIGN_BUUMISH,
OldPersian::WordDivider => WORD_DIVIDER,
OldPersian::NumberOne => NUMBER_ONE,
OldPersian::NumberTwo => NUMBER_TWO,
OldPersian::NumberTen => NUMBER_TEN,
OldPersian::NumberTwenty => NUMBER_TWENTY,
OldPersian::NumberHundred => NUMBER_HUNDRED,
}
}
}
impl std::convert::TryFrom<char> for OldPersian {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
SIGN_A => Ok(OldPersian::SignA),
SIGN_I => Ok(OldPersian::SignI),
SIGN_U => Ok(OldPersian::SignU),
SIGN_KA => Ok(OldPersian::SignKa),
SIGN_KU => Ok(OldPersian::SignKu),
SIGN_GA => Ok(OldPersian::SignGa),
SIGN_GU => Ok(OldPersian::SignGu),
SIGN_XA => Ok(OldPersian::SignXa),
SIGN_CA => Ok(OldPersian::SignCa),
SIGN_JA => Ok(OldPersian::SignJa),
SIGN_JI => Ok(OldPersian::SignJi),
SIGN_TA => Ok(OldPersian::SignTa),
SIGN_TU => Ok(OldPersian::SignTu),
SIGN_DA => Ok(OldPersian::SignDa),
SIGN_DI => Ok(OldPersian::SignDi),
SIGN_DU => Ok(OldPersian::SignDu),
SIGN_THA => Ok(OldPersian::SignTha),
SIGN_PA => Ok(OldPersian::SignPa),
SIGN_BA => Ok(OldPersian::SignBa),
SIGN_FA => Ok(OldPersian::SignFa),
SIGN_NA => Ok(OldPersian::SignNa),
SIGN_NU => Ok(OldPersian::SignNu),
SIGN_MA => Ok(OldPersian::SignMa),
SIGN_MI => Ok(OldPersian::SignMi),
SIGN_MU => Ok(OldPersian::SignMu),
SIGN_YA => Ok(OldPersian::SignYa),
SIGN_VA => Ok(OldPersian::SignVa),
SIGN_VI => Ok(OldPersian::SignVi),
SIGN_RA => Ok(OldPersian::SignRa),
SIGN_RU => Ok(OldPersian::SignRu),
SIGN_LA => Ok(OldPersian::SignLa),
SIGN_SA => Ok(OldPersian::SignSa),
SIGN_ZA => Ok(OldPersian::SignZa),
SIGN_SHA => Ok(OldPersian::SignSha),
SIGN_SSA => Ok(OldPersian::SignSsa),
SIGN_HA => Ok(OldPersian::SignHa),
SIGN_AURAMAZDAA => Ok(OldPersian::SignAuramazdaa),
SIGN_AURAMAZDAA_DASH_2 => Ok(OldPersian::SignAuramazdaaDash2),
SIGN_AURAMAZDAAHA => Ok(OldPersian::SignAuramazdaaha),
SIGN_XSHAAYATHIYA => Ok(OldPersian::SignXshaayathiya),
SIGN_DAHYAAUSH => Ok(OldPersian::SignDahyaaush),
SIGN_DAHYAAUSH_DASH_2 => Ok(OldPersian::SignDahyaaushDash2),
SIGN_BAGA => Ok(OldPersian::SignBaga),
SIGN_BUUMISH => Ok(OldPersian::SignBuumish),
WORD_DIVIDER => Ok(OldPersian::WordDivider),
NUMBER_ONE => Ok(OldPersian::NumberOne),
NUMBER_TWO => Ok(OldPersian::NumberTwo),
NUMBER_TEN => Ok(OldPersian::NumberTen),
NUMBER_TWENTY => Ok(OldPersian::NumberTwenty),
NUMBER_HUNDRED => Ok(OldPersian::NumberHundred),
_ => Err(()),
}
}
}
impl Into<u32> for OldPersian {
fn into(self) -> u32 {
let c: char = self.into();
let hex = c
.escape_unicode()
.to_string()
.replace("\\u{", "")
.replace("}", "");
u32::from_str_radix(&hex, 16).unwrap()
}
}
impl std::convert::TryFrom<u32> for OldPersian {
type Error = ();
fn try_from(u: u32) -> Result<Self, Self::Error> {
if let Ok(c) = char::try_from(u) {
Self::try_from(c)
} else {
Err(())
}
}
}
impl Iterator for OldPersian {
type Item = Self;
fn next(&mut self) -> Option<Self> {
let index: u32 = (*self).into();
use std::convert::TryFrom;
Self::try_from(index + 1).ok()
}
}
impl OldPersian {
pub fn new() -> Self {
OldPersian::SignA
}
pub fn name(&self) -> &str {
match self {
OldPersian::SignA => "old persian sign a",
OldPersian::SignI => "old persian sign i",
OldPersian::SignU => "old persian sign u",
OldPersian::SignKa => "old persian sign ka",
OldPersian::SignKu => "old persian sign ku",
OldPersian::SignGa => "old persian sign ga",
OldPersian::SignGu => "old persian sign gu",
OldPersian::SignXa => "old persian sign xa",
OldPersian::SignCa => "old persian sign ca",
OldPersian::SignJa => "old persian sign ja",
OldPersian::SignJi => "old persian sign ji",
OldPersian::SignTa => "old persian sign ta",
OldPersian::SignTu => "old persian sign tu",
OldPersian::SignDa => "old persian sign da",
OldPersian::SignDi => "old persian sign di",
OldPersian::SignDu => "old persian sign du",
OldPersian::SignTha => "old persian sign tha",
OldPersian::SignPa => "old persian sign pa",
OldPersian::SignBa => "old persian sign ba",
OldPersian::SignFa => "old persian sign fa",
OldPersian::SignNa => "old persian sign na",
OldPersian::SignNu => "old persian sign nu",
OldPersian::SignMa => "old persian sign ma",
OldPersian::SignMi => "old persian sign mi",
OldPersian::SignMu => "old persian sign mu",
OldPersian::SignYa => "old persian sign ya",
OldPersian::SignVa => "old persian sign va",
OldPersian::SignVi => "old persian sign vi",
OldPersian::SignRa => "old persian sign ra",
OldPersian::SignRu => "old persian sign ru",
OldPersian::SignLa => "old persian sign la",
OldPersian::SignSa => "old persian sign sa",
OldPersian::SignZa => "old persian sign za",
OldPersian::SignSha => "old persian sign sha",
OldPersian::SignSsa => "old persian sign ssa",
OldPersian::SignHa => "old persian sign ha",
OldPersian::SignAuramazdaa => "old persian sign auramazdaa",
OldPersian::SignAuramazdaaDash2 => "old persian sign auramazdaa-2",
OldPersian::SignAuramazdaaha => "old persian sign auramazdaaha",
OldPersian::SignXshaayathiya => "old persian sign xshaayathiya",
OldPersian::SignDahyaaush => "old persian sign dahyaaush",
OldPersian::SignDahyaaushDash2 => "old persian sign dahyaaush-2",
OldPersian::SignBaga => "old persian sign baga",
OldPersian::SignBuumish => "old persian sign buumish",
OldPersian::WordDivider => "old persian word divider",
OldPersian::NumberOne => "old persian number one",
OldPersian::NumberTwo => "old persian number two",
OldPersian::NumberTen => "old persian number ten",
OldPersian::NumberTwenty => "old persian number twenty",
OldPersian::NumberHundred => "old persian number hundred",
}
}
}