mod constants {
pub const ANJI: char = '𑒀';
pub const LETTER_A: char = '𑒁';
pub const LETTER_AA: char = '𑒂';
pub const LETTER_I: char = '𑒃';
pub const LETTER_II: char = '𑒄';
pub const LETTER_U: char = '𑒅';
pub const LETTER_UU: char = '𑒆';
pub const LETTER_VOCALIC_R: char = '𑒇';
pub const LETTER_VOCALIC_RR: char = '𑒈';
pub const LETTER_VOCALIC_L: char = '𑒉';
pub const LETTER_VOCALIC_LL: char = '𑒊';
pub const LETTER_E: char = '𑒋';
pub const LETTER_AI: char = '𑒌';
pub const LETTER_O: char = '𑒍';
pub const LETTER_AU: char = '𑒎';
pub const LETTER_KA: char = '𑒏';
pub const LETTER_KHA: char = '𑒐';
pub const LETTER_GA: char = '𑒑';
pub const LETTER_GHA: char = '𑒒';
pub const LETTER_NGA: char = '𑒓';
pub const LETTER_CA: char = '𑒔';
pub const LETTER_CHA: char = '𑒕';
pub const LETTER_JA: char = '𑒖';
pub const LETTER_JHA: char = '𑒗';
pub const LETTER_NYA: char = '𑒘';
pub const LETTER_TTA: char = '𑒙';
pub const LETTER_TTHA: char = '𑒚';
pub const LETTER_DDA: char = '𑒛';
pub const LETTER_DDHA: char = '𑒜';
pub const LETTER_NNA: char = '𑒝';
pub const LETTER_TA: char = '𑒞';
pub const LETTER_THA: char = '𑒟';
pub const LETTER_DA: char = '𑒠';
pub const LETTER_DHA: char = '𑒡';
pub const LETTER_NA: char = '𑒢';
pub const LETTER_PA: char = '𑒣';
pub const LETTER_PHA: char = '𑒤';
pub const LETTER_BA: char = '𑒥';
pub const LETTER_BHA: char = '𑒦';
pub const LETTER_MA: char = '𑒧';
pub const LETTER_YA: char = '𑒨';
pub const LETTER_RA: char = '𑒩';
pub const LETTER_LA: char = '𑒪';
pub const LETTER_VA: char = '𑒫';
pub const LETTER_SHA: char = '𑒬';
pub const LETTER_SSA: char = '𑒭';
pub const LETTER_SA: char = '𑒮';
pub const LETTER_HA: char = '𑒯';
pub const VOWEL_SIGN_AA: char = '𑒰';
pub const VOWEL_SIGN_I: char = '𑒱';
pub const VOWEL_SIGN_II: char = '𑒲';
pub const VOWEL_SIGN_U: char = '𑒳';
pub const VOWEL_SIGN_UU: char = '𑒴';
pub const VOWEL_SIGN_VOCALIC_R: char = '𑒵';
pub const VOWEL_SIGN_VOCALIC_RR: char = '𑒶';
pub const VOWEL_SIGN_VOCALIC_L: char = '𑒷';
pub const VOWEL_SIGN_VOCALIC_LL: char = '𑒸';
pub const VOWEL_SIGN_E: char = '𑒹';
pub const VOWEL_SIGN_SHORT_E: char = '𑒺';
pub const VOWEL_SIGN_AI: char = '𑒻';
pub const VOWEL_SIGN_O: char = '𑒼';
pub const VOWEL_SIGN_SHORT_O: char = '𑒽';
pub const VOWEL_SIGN_AU: char = '𑒾';
pub const SIGN_CANDRABINDU: char = '𑒿';
pub const SIGN_ANUSVARA: char = '𑓀';
pub const SIGN_VISARGA: char = '𑓁';
pub const SIGN_VIRAMA: char = '𑓂';
pub const SIGN_NUKTA: char = '𑓃';
pub const SIGN_AVAGRAHA: char = '𑓄';
pub const GVANG: char = '𑓅';
pub const ABBREVIATION_SIGN: char = '𑓆';
pub const OM: char = '𑓇';
pub const DIGIT_ZERO: char = '𑓐';
pub const DIGIT_ONE: char = '𑓑';
pub const DIGIT_TWO: char = '𑓒';
pub const DIGIT_THREE: char = '𑓓';
pub const DIGIT_FOUR: char = '𑓔';
pub const DIGIT_FIVE: char = '𑓕';
pub const DIGIT_SIX: char = '𑓖';
pub const DIGIT_SEVEN: char = '𑓗';
pub const DIGIT_EIGHT: char = '𑓘';
pub const DIGIT_NINE: char = '𑓙';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Tirhuta {
Anji,
LetterA,
LetterAa,
LetterI,
LetterIi,
LetterU,
LetterUu,
LetterVocalicR,
LetterVocalicRr,
LetterVocalicL,
LetterVocalicLl,
LetterE,
LetterAi,
LetterO,
LetterAu,
LetterKa,
LetterKha,
LetterGa,
LetterGha,
LetterNga,
LetterCa,
LetterCha,
LetterJa,
LetterJha,
LetterNya,
LetterTta,
LetterTtha,
LetterDda,
LetterDdha,
LetterNna,
LetterTa,
LetterTha,
LetterDa,
LetterDha,
LetterNa,
LetterPa,
LetterPha,
LetterBa,
LetterBha,
LetterMa,
LetterYa,
LetterRa,
LetterLa,
LetterVa,
LetterSha,
LetterSsa,
LetterSa,
LetterHa,
VowelSignAa,
VowelSignI,
VowelSignIi,
VowelSignU,
VowelSignUu,
VowelSignVocalicR,
VowelSignVocalicRr,
VowelSignVocalicL,
VowelSignVocalicLl,
VowelSignE,
VowelSignShortE,
VowelSignAi,
VowelSignO,
VowelSignShortO,
VowelSignAu,
SignCandrabindu,
SignAnusvara,
SignVisarga,
SignVirama,
SignNukta,
SignAvagraha,
Gvang,
AbbreviationSign,
Om,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
}
impl Into<char> for Tirhuta {
fn into(self) -> char {
use constants::*;
match self {
Tirhuta::Anji => ANJI,
Tirhuta::LetterA => LETTER_A,
Tirhuta::LetterAa => LETTER_AA,
Tirhuta::LetterI => LETTER_I,
Tirhuta::LetterIi => LETTER_II,
Tirhuta::LetterU => LETTER_U,
Tirhuta::LetterUu => LETTER_UU,
Tirhuta::LetterVocalicR => LETTER_VOCALIC_R,
Tirhuta::LetterVocalicRr => LETTER_VOCALIC_RR,
Tirhuta::LetterVocalicL => LETTER_VOCALIC_L,
Tirhuta::LetterVocalicLl => LETTER_VOCALIC_LL,
Tirhuta::LetterE => LETTER_E,
Tirhuta::LetterAi => LETTER_AI,
Tirhuta::LetterO => LETTER_O,
Tirhuta::LetterAu => LETTER_AU,
Tirhuta::LetterKa => LETTER_KA,
Tirhuta::LetterKha => LETTER_KHA,
Tirhuta::LetterGa => LETTER_GA,
Tirhuta::LetterGha => LETTER_GHA,
Tirhuta::LetterNga => LETTER_NGA,
Tirhuta::LetterCa => LETTER_CA,
Tirhuta::LetterCha => LETTER_CHA,
Tirhuta::LetterJa => LETTER_JA,
Tirhuta::LetterJha => LETTER_JHA,
Tirhuta::LetterNya => LETTER_NYA,
Tirhuta::LetterTta => LETTER_TTA,
Tirhuta::LetterTtha => LETTER_TTHA,
Tirhuta::LetterDda => LETTER_DDA,
Tirhuta::LetterDdha => LETTER_DDHA,
Tirhuta::LetterNna => LETTER_NNA,
Tirhuta::LetterTa => LETTER_TA,
Tirhuta::LetterTha => LETTER_THA,
Tirhuta::LetterDa => LETTER_DA,
Tirhuta::LetterDha => LETTER_DHA,
Tirhuta::LetterNa => LETTER_NA,
Tirhuta::LetterPa => LETTER_PA,
Tirhuta::LetterPha => LETTER_PHA,
Tirhuta::LetterBa => LETTER_BA,
Tirhuta::LetterBha => LETTER_BHA,
Tirhuta::LetterMa => LETTER_MA,
Tirhuta::LetterYa => LETTER_YA,
Tirhuta::LetterRa => LETTER_RA,
Tirhuta::LetterLa => LETTER_LA,
Tirhuta::LetterVa => LETTER_VA,
Tirhuta::LetterSha => LETTER_SHA,
Tirhuta::LetterSsa => LETTER_SSA,
Tirhuta::LetterSa => LETTER_SA,
Tirhuta::LetterHa => LETTER_HA,
Tirhuta::VowelSignAa => VOWEL_SIGN_AA,
Tirhuta::VowelSignI => VOWEL_SIGN_I,
Tirhuta::VowelSignIi => VOWEL_SIGN_II,
Tirhuta::VowelSignU => VOWEL_SIGN_U,
Tirhuta::VowelSignUu => VOWEL_SIGN_UU,
Tirhuta::VowelSignVocalicR => VOWEL_SIGN_VOCALIC_R,
Tirhuta::VowelSignVocalicRr => VOWEL_SIGN_VOCALIC_RR,
Tirhuta::VowelSignVocalicL => VOWEL_SIGN_VOCALIC_L,
Tirhuta::VowelSignVocalicLl => VOWEL_SIGN_VOCALIC_LL,
Tirhuta::VowelSignE => VOWEL_SIGN_E,
Tirhuta::VowelSignShortE => VOWEL_SIGN_SHORT_E,
Tirhuta::VowelSignAi => VOWEL_SIGN_AI,
Tirhuta::VowelSignO => VOWEL_SIGN_O,
Tirhuta::VowelSignShortO => VOWEL_SIGN_SHORT_O,
Tirhuta::VowelSignAu => VOWEL_SIGN_AU,
Tirhuta::SignCandrabindu => SIGN_CANDRABINDU,
Tirhuta::SignAnusvara => SIGN_ANUSVARA,
Tirhuta::SignVisarga => SIGN_VISARGA,
Tirhuta::SignVirama => SIGN_VIRAMA,
Tirhuta::SignNukta => SIGN_NUKTA,
Tirhuta::SignAvagraha => SIGN_AVAGRAHA,
Tirhuta::Gvang => GVANG,
Tirhuta::AbbreviationSign => ABBREVIATION_SIGN,
Tirhuta::Om => OM,
Tirhuta::DigitZero => DIGIT_ZERO,
Tirhuta::DigitOne => DIGIT_ONE,
Tirhuta::DigitTwo => DIGIT_TWO,
Tirhuta::DigitThree => DIGIT_THREE,
Tirhuta::DigitFour => DIGIT_FOUR,
Tirhuta::DigitFive => DIGIT_FIVE,
Tirhuta::DigitSix => DIGIT_SIX,
Tirhuta::DigitSeven => DIGIT_SEVEN,
Tirhuta::DigitEight => DIGIT_EIGHT,
Tirhuta::DigitNine => DIGIT_NINE,
}
}
}
impl std::convert::TryFrom<char> for Tirhuta {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
ANJI => Ok(Tirhuta::Anji),
LETTER_A => Ok(Tirhuta::LetterA),
LETTER_AA => Ok(Tirhuta::LetterAa),
LETTER_I => Ok(Tirhuta::LetterI),
LETTER_II => Ok(Tirhuta::LetterIi),
LETTER_U => Ok(Tirhuta::LetterU),
LETTER_UU => Ok(Tirhuta::LetterUu),
LETTER_VOCALIC_R => Ok(Tirhuta::LetterVocalicR),
LETTER_VOCALIC_RR => Ok(Tirhuta::LetterVocalicRr),
LETTER_VOCALIC_L => Ok(Tirhuta::LetterVocalicL),
LETTER_VOCALIC_LL => Ok(Tirhuta::LetterVocalicLl),
LETTER_E => Ok(Tirhuta::LetterE),
LETTER_AI => Ok(Tirhuta::LetterAi),
LETTER_O => Ok(Tirhuta::LetterO),
LETTER_AU => Ok(Tirhuta::LetterAu),
LETTER_KA => Ok(Tirhuta::LetterKa),
LETTER_KHA => Ok(Tirhuta::LetterKha),
LETTER_GA => Ok(Tirhuta::LetterGa),
LETTER_GHA => Ok(Tirhuta::LetterGha),
LETTER_NGA => Ok(Tirhuta::LetterNga),
LETTER_CA => Ok(Tirhuta::LetterCa),
LETTER_CHA => Ok(Tirhuta::LetterCha),
LETTER_JA => Ok(Tirhuta::LetterJa),
LETTER_JHA => Ok(Tirhuta::LetterJha),
LETTER_NYA => Ok(Tirhuta::LetterNya),
LETTER_TTA => Ok(Tirhuta::LetterTta),
LETTER_TTHA => Ok(Tirhuta::LetterTtha),
LETTER_DDA => Ok(Tirhuta::LetterDda),
LETTER_DDHA => Ok(Tirhuta::LetterDdha),
LETTER_NNA => Ok(Tirhuta::LetterNna),
LETTER_TA => Ok(Tirhuta::LetterTa),
LETTER_THA => Ok(Tirhuta::LetterTha),
LETTER_DA => Ok(Tirhuta::LetterDa),
LETTER_DHA => Ok(Tirhuta::LetterDha),
LETTER_NA => Ok(Tirhuta::LetterNa),
LETTER_PA => Ok(Tirhuta::LetterPa),
LETTER_PHA => Ok(Tirhuta::LetterPha),
LETTER_BA => Ok(Tirhuta::LetterBa),
LETTER_BHA => Ok(Tirhuta::LetterBha),
LETTER_MA => Ok(Tirhuta::LetterMa),
LETTER_YA => Ok(Tirhuta::LetterYa),
LETTER_RA => Ok(Tirhuta::LetterRa),
LETTER_LA => Ok(Tirhuta::LetterLa),
LETTER_VA => Ok(Tirhuta::LetterVa),
LETTER_SHA => Ok(Tirhuta::LetterSha),
LETTER_SSA => Ok(Tirhuta::LetterSsa),
LETTER_SA => Ok(Tirhuta::LetterSa),
LETTER_HA => Ok(Tirhuta::LetterHa),
VOWEL_SIGN_AA => Ok(Tirhuta::VowelSignAa),
VOWEL_SIGN_I => Ok(Tirhuta::VowelSignI),
VOWEL_SIGN_II => Ok(Tirhuta::VowelSignIi),
VOWEL_SIGN_U => Ok(Tirhuta::VowelSignU),
VOWEL_SIGN_UU => Ok(Tirhuta::VowelSignUu),
VOWEL_SIGN_VOCALIC_R => Ok(Tirhuta::VowelSignVocalicR),
VOWEL_SIGN_VOCALIC_RR => Ok(Tirhuta::VowelSignVocalicRr),
VOWEL_SIGN_VOCALIC_L => Ok(Tirhuta::VowelSignVocalicL),
VOWEL_SIGN_VOCALIC_LL => Ok(Tirhuta::VowelSignVocalicLl),
VOWEL_SIGN_E => Ok(Tirhuta::VowelSignE),
VOWEL_SIGN_SHORT_E => Ok(Tirhuta::VowelSignShortE),
VOWEL_SIGN_AI => Ok(Tirhuta::VowelSignAi),
VOWEL_SIGN_O => Ok(Tirhuta::VowelSignO),
VOWEL_SIGN_SHORT_O => Ok(Tirhuta::VowelSignShortO),
VOWEL_SIGN_AU => Ok(Tirhuta::VowelSignAu),
SIGN_CANDRABINDU => Ok(Tirhuta::SignCandrabindu),
SIGN_ANUSVARA => Ok(Tirhuta::SignAnusvara),
SIGN_VISARGA => Ok(Tirhuta::SignVisarga),
SIGN_VIRAMA => Ok(Tirhuta::SignVirama),
SIGN_NUKTA => Ok(Tirhuta::SignNukta),
SIGN_AVAGRAHA => Ok(Tirhuta::SignAvagraha),
GVANG => Ok(Tirhuta::Gvang),
ABBREVIATION_SIGN => Ok(Tirhuta::AbbreviationSign),
OM => Ok(Tirhuta::Om),
DIGIT_ZERO => Ok(Tirhuta::DigitZero),
DIGIT_ONE => Ok(Tirhuta::DigitOne),
DIGIT_TWO => Ok(Tirhuta::DigitTwo),
DIGIT_THREE => Ok(Tirhuta::DigitThree),
DIGIT_FOUR => Ok(Tirhuta::DigitFour),
DIGIT_FIVE => Ok(Tirhuta::DigitFive),
DIGIT_SIX => Ok(Tirhuta::DigitSix),
DIGIT_SEVEN => Ok(Tirhuta::DigitSeven),
DIGIT_EIGHT => Ok(Tirhuta::DigitEight),
DIGIT_NINE => Ok(Tirhuta::DigitNine),
_ => Err(()),
}
}
}
impl Into<u32> for Tirhuta {
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 Tirhuta {
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 Tirhuta {
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 Tirhuta {
pub fn new() -> Self {
Tirhuta::Anji
}
pub fn name(&self) -> &str {
match self {
Tirhuta::Anji => "tirhuta anji",
Tirhuta::LetterA => "tirhuta letter a",
Tirhuta::LetterAa => "tirhuta letter aa",
Tirhuta::LetterI => "tirhuta letter i",
Tirhuta::LetterIi => "tirhuta letter ii",
Tirhuta::LetterU => "tirhuta letter u",
Tirhuta::LetterUu => "tirhuta letter uu",
Tirhuta::LetterVocalicR => "tirhuta letter vocalic r",
Tirhuta::LetterVocalicRr => "tirhuta letter vocalic rr",
Tirhuta::LetterVocalicL => "tirhuta letter vocalic l",
Tirhuta::LetterVocalicLl => "tirhuta letter vocalic ll",
Tirhuta::LetterE => "tirhuta letter e",
Tirhuta::LetterAi => "tirhuta letter ai",
Tirhuta::LetterO => "tirhuta letter o",
Tirhuta::LetterAu => "tirhuta letter au",
Tirhuta::LetterKa => "tirhuta letter ka",
Tirhuta::LetterKha => "tirhuta letter kha",
Tirhuta::LetterGa => "tirhuta letter ga",
Tirhuta::LetterGha => "tirhuta letter gha",
Tirhuta::LetterNga => "tirhuta letter nga",
Tirhuta::LetterCa => "tirhuta letter ca",
Tirhuta::LetterCha => "tirhuta letter cha",
Tirhuta::LetterJa => "tirhuta letter ja",
Tirhuta::LetterJha => "tirhuta letter jha",
Tirhuta::LetterNya => "tirhuta letter nya",
Tirhuta::LetterTta => "tirhuta letter tta",
Tirhuta::LetterTtha => "tirhuta letter ttha",
Tirhuta::LetterDda => "tirhuta letter dda",
Tirhuta::LetterDdha => "tirhuta letter ddha",
Tirhuta::LetterNna => "tirhuta letter nna",
Tirhuta::LetterTa => "tirhuta letter ta",
Tirhuta::LetterTha => "tirhuta letter tha",
Tirhuta::LetterDa => "tirhuta letter da",
Tirhuta::LetterDha => "tirhuta letter dha",
Tirhuta::LetterNa => "tirhuta letter na",
Tirhuta::LetterPa => "tirhuta letter pa",
Tirhuta::LetterPha => "tirhuta letter pha",
Tirhuta::LetterBa => "tirhuta letter ba",
Tirhuta::LetterBha => "tirhuta letter bha",
Tirhuta::LetterMa => "tirhuta letter ma",
Tirhuta::LetterYa => "tirhuta letter ya",
Tirhuta::LetterRa => "tirhuta letter ra",
Tirhuta::LetterLa => "tirhuta letter la",
Tirhuta::LetterVa => "tirhuta letter va",
Tirhuta::LetterSha => "tirhuta letter sha",
Tirhuta::LetterSsa => "tirhuta letter ssa",
Tirhuta::LetterSa => "tirhuta letter sa",
Tirhuta::LetterHa => "tirhuta letter ha",
Tirhuta::VowelSignAa => "tirhuta vowel sign aa",
Tirhuta::VowelSignI => "tirhuta vowel sign i",
Tirhuta::VowelSignIi => "tirhuta vowel sign ii",
Tirhuta::VowelSignU => "tirhuta vowel sign u",
Tirhuta::VowelSignUu => "tirhuta vowel sign uu",
Tirhuta::VowelSignVocalicR => "tirhuta vowel sign vocalic r",
Tirhuta::VowelSignVocalicRr => "tirhuta vowel sign vocalic rr",
Tirhuta::VowelSignVocalicL => "tirhuta vowel sign vocalic l",
Tirhuta::VowelSignVocalicLl => "tirhuta vowel sign vocalic ll",
Tirhuta::VowelSignE => "tirhuta vowel sign e",
Tirhuta::VowelSignShortE => "tirhuta vowel sign short e",
Tirhuta::VowelSignAi => "tirhuta vowel sign ai",
Tirhuta::VowelSignO => "tirhuta vowel sign o",
Tirhuta::VowelSignShortO => "tirhuta vowel sign short o",
Tirhuta::VowelSignAu => "tirhuta vowel sign au",
Tirhuta::SignCandrabindu => "tirhuta sign candrabindu",
Tirhuta::SignAnusvara => "tirhuta sign anusvara",
Tirhuta::SignVisarga => "tirhuta sign visarga",
Tirhuta::SignVirama => "tirhuta sign virama",
Tirhuta::SignNukta => "tirhuta sign nukta",
Tirhuta::SignAvagraha => "tirhuta sign avagraha",
Tirhuta::Gvang => "tirhuta gvang",
Tirhuta::AbbreviationSign => "tirhuta abbreviation sign",
Tirhuta::Om => "tirhuta om",
Tirhuta::DigitZero => "tirhuta digit zero",
Tirhuta::DigitOne => "tirhuta digit one",
Tirhuta::DigitTwo => "tirhuta digit two",
Tirhuta::DigitThree => "tirhuta digit three",
Tirhuta::DigitFour => "tirhuta digit four",
Tirhuta::DigitFive => "tirhuta digit five",
Tirhuta::DigitSix => "tirhuta digit six",
Tirhuta::DigitSeven => "tirhuta digit seven",
Tirhuta::DigitEight => "tirhuta digit eight",
Tirhuta::DigitNine => "tirhuta digit nine",
}
}
}