mod constants {
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_EE: char = '𑵧';
pub const LETTER_AI: char = '𑵨';
pub const LETTER_OO: char = '𑵪';
pub const LETTER_AU: char = '𑵫';
pub const LETTER_YA: char = '𑵬';
pub const LETTER_VA: char = '𑵭';
pub const LETTER_BA: char = '𑵮';
pub const LETTER_BHA: char = '𑵯';
pub const LETTER_MA: char = '𑵰';
pub const LETTER_KA: char = '𑵱';
pub const LETTER_KHA: char = '𑵲';
pub const LETTER_TA: char = '𑵳';
pub const LETTER_THA: char = '𑵴';
pub const LETTER_LA: char = '𑵵';
pub const LETTER_GA: char = '𑵶';
pub const LETTER_GHA: char = '𑵷';
pub const LETTER_DA: char = '𑵸';
pub const LETTER_DHA: char = '𑵹';
pub const LETTER_NA: char = '𑵺';
pub const LETTER_CA: char = '𑵻';
pub const LETTER_CHA: char = '𑵼';
pub const LETTER_TTA: char = '𑵽';
pub const LETTER_TTHA: char = '𑵾';
pub const LETTER_LLA: char = '𑵿';
pub const LETTER_JA: char = '𑶀';
pub const LETTER_JHA: char = '𑶁';
pub const LETTER_DDA: char = '𑶂';
pub const LETTER_DDHA: char = '𑶃';
pub const LETTER_NGA: char = '𑶄';
pub const LETTER_PA: char = '𑶅';
pub const LETTER_PHA: char = '𑶆';
pub const LETTER_HA: char = '𑶇';
pub const LETTER_RA: char = '𑶈';
pub const LETTER_SA: 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_EE: char = '𑶐';
pub const VOWEL_SIGN_AI: char = '𑶑';
pub const VOWEL_SIGN_OO: char = '𑶓';
pub const VOWEL_SIGN_AU: char = '𑶔';
pub const SIGN_ANUSVARA: char = '𑶕';
pub const SIGN_VISARGA: char = '𑶖';
pub const VIRAMA: 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 GunjalaGondi {
LetterA,
LetterAa,
LetterI,
LetterIi,
LetterU,
LetterUu,
LetterEe,
LetterAi,
LetterOo,
LetterAu,
LetterYa,
LetterVa,
LetterBa,
LetterBha,
LetterMa,
LetterKa,
LetterKha,
LetterTa,
LetterTha,
LetterLa,
LetterGa,
LetterGha,
LetterDa,
LetterDha,
LetterNa,
LetterCa,
LetterCha,
LetterTta,
LetterTtha,
LetterLla,
LetterJa,
LetterJha,
LetterDda,
LetterDdha,
LetterNga,
LetterPa,
LetterPha,
LetterHa,
LetterRa,
LetterSa,
VowelSignAa,
VowelSignI,
VowelSignIi,
VowelSignU,
VowelSignUu,
VowelSignEe,
VowelSignAi,
VowelSignOo,
VowelSignAu,
SignAnusvara,
SignVisarga,
Virama,
Om,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
}
impl Into<char> for GunjalaGondi {
fn into(self) -> char {
use constants::*;
match self {
GunjalaGondi::LetterA => LETTER_A,
GunjalaGondi::LetterAa => LETTER_AA,
GunjalaGondi::LetterI => LETTER_I,
GunjalaGondi::LetterIi => LETTER_II,
GunjalaGondi::LetterU => LETTER_U,
GunjalaGondi::LetterUu => LETTER_UU,
GunjalaGondi::LetterEe => LETTER_EE,
GunjalaGondi::LetterAi => LETTER_AI,
GunjalaGondi::LetterOo => LETTER_OO,
GunjalaGondi::LetterAu => LETTER_AU,
GunjalaGondi::LetterYa => LETTER_YA,
GunjalaGondi::LetterVa => LETTER_VA,
GunjalaGondi::LetterBa => LETTER_BA,
GunjalaGondi::LetterBha => LETTER_BHA,
GunjalaGondi::LetterMa => LETTER_MA,
GunjalaGondi::LetterKa => LETTER_KA,
GunjalaGondi::LetterKha => LETTER_KHA,
GunjalaGondi::LetterTa => LETTER_TA,
GunjalaGondi::LetterTha => LETTER_THA,
GunjalaGondi::LetterLa => LETTER_LA,
GunjalaGondi::LetterGa => LETTER_GA,
GunjalaGondi::LetterGha => LETTER_GHA,
GunjalaGondi::LetterDa => LETTER_DA,
GunjalaGondi::LetterDha => LETTER_DHA,
GunjalaGondi::LetterNa => LETTER_NA,
GunjalaGondi::LetterCa => LETTER_CA,
GunjalaGondi::LetterCha => LETTER_CHA,
GunjalaGondi::LetterTta => LETTER_TTA,
GunjalaGondi::LetterTtha => LETTER_TTHA,
GunjalaGondi::LetterLla => LETTER_LLA,
GunjalaGondi::LetterJa => LETTER_JA,
GunjalaGondi::LetterJha => LETTER_JHA,
GunjalaGondi::LetterDda => LETTER_DDA,
GunjalaGondi::LetterDdha => LETTER_DDHA,
GunjalaGondi::LetterNga => LETTER_NGA,
GunjalaGondi::LetterPa => LETTER_PA,
GunjalaGondi::LetterPha => LETTER_PHA,
GunjalaGondi::LetterHa => LETTER_HA,
GunjalaGondi::LetterRa => LETTER_RA,
GunjalaGondi::LetterSa => LETTER_SA,
GunjalaGondi::VowelSignAa => VOWEL_SIGN_AA,
GunjalaGondi::VowelSignI => VOWEL_SIGN_I,
GunjalaGondi::VowelSignIi => VOWEL_SIGN_II,
GunjalaGondi::VowelSignU => VOWEL_SIGN_U,
GunjalaGondi::VowelSignUu => VOWEL_SIGN_UU,
GunjalaGondi::VowelSignEe => VOWEL_SIGN_EE,
GunjalaGondi::VowelSignAi => VOWEL_SIGN_AI,
GunjalaGondi::VowelSignOo => VOWEL_SIGN_OO,
GunjalaGondi::VowelSignAu => VOWEL_SIGN_AU,
GunjalaGondi::SignAnusvara => SIGN_ANUSVARA,
GunjalaGondi::SignVisarga => SIGN_VISARGA,
GunjalaGondi::Virama => VIRAMA,
GunjalaGondi::Om => OM,
GunjalaGondi::DigitZero => DIGIT_ZERO,
GunjalaGondi::DigitOne => DIGIT_ONE,
GunjalaGondi::DigitTwo => DIGIT_TWO,
GunjalaGondi::DigitThree => DIGIT_THREE,
GunjalaGondi::DigitFour => DIGIT_FOUR,
GunjalaGondi::DigitFive => DIGIT_FIVE,
GunjalaGondi::DigitSix => DIGIT_SIX,
GunjalaGondi::DigitSeven => DIGIT_SEVEN,
GunjalaGondi::DigitEight => DIGIT_EIGHT,
GunjalaGondi::DigitNine => DIGIT_NINE,
}
}
}
impl std::convert::TryFrom<char> for GunjalaGondi {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
LETTER_A => Ok(GunjalaGondi::LetterA),
LETTER_AA => Ok(GunjalaGondi::LetterAa),
LETTER_I => Ok(GunjalaGondi::LetterI),
LETTER_II => Ok(GunjalaGondi::LetterIi),
LETTER_U => Ok(GunjalaGondi::LetterU),
LETTER_UU => Ok(GunjalaGondi::LetterUu),
LETTER_EE => Ok(GunjalaGondi::LetterEe),
LETTER_AI => Ok(GunjalaGondi::LetterAi),
LETTER_OO => Ok(GunjalaGondi::LetterOo),
LETTER_AU => Ok(GunjalaGondi::LetterAu),
LETTER_YA => Ok(GunjalaGondi::LetterYa),
LETTER_VA => Ok(GunjalaGondi::LetterVa),
LETTER_BA => Ok(GunjalaGondi::LetterBa),
LETTER_BHA => Ok(GunjalaGondi::LetterBha),
LETTER_MA => Ok(GunjalaGondi::LetterMa),
LETTER_KA => Ok(GunjalaGondi::LetterKa),
LETTER_KHA => Ok(GunjalaGondi::LetterKha),
LETTER_TA => Ok(GunjalaGondi::LetterTa),
LETTER_THA => Ok(GunjalaGondi::LetterTha),
LETTER_LA => Ok(GunjalaGondi::LetterLa),
LETTER_GA => Ok(GunjalaGondi::LetterGa),
LETTER_GHA => Ok(GunjalaGondi::LetterGha),
LETTER_DA => Ok(GunjalaGondi::LetterDa),
LETTER_DHA => Ok(GunjalaGondi::LetterDha),
LETTER_NA => Ok(GunjalaGondi::LetterNa),
LETTER_CA => Ok(GunjalaGondi::LetterCa),
LETTER_CHA => Ok(GunjalaGondi::LetterCha),
LETTER_TTA => Ok(GunjalaGondi::LetterTta),
LETTER_TTHA => Ok(GunjalaGondi::LetterTtha),
LETTER_LLA => Ok(GunjalaGondi::LetterLla),
LETTER_JA => Ok(GunjalaGondi::LetterJa),
LETTER_JHA => Ok(GunjalaGondi::LetterJha),
LETTER_DDA => Ok(GunjalaGondi::LetterDda),
LETTER_DDHA => Ok(GunjalaGondi::LetterDdha),
LETTER_NGA => Ok(GunjalaGondi::LetterNga),
LETTER_PA => Ok(GunjalaGondi::LetterPa),
LETTER_PHA => Ok(GunjalaGondi::LetterPha),
LETTER_HA => Ok(GunjalaGondi::LetterHa),
LETTER_RA => Ok(GunjalaGondi::LetterRa),
LETTER_SA => Ok(GunjalaGondi::LetterSa),
VOWEL_SIGN_AA => Ok(GunjalaGondi::VowelSignAa),
VOWEL_SIGN_I => Ok(GunjalaGondi::VowelSignI),
VOWEL_SIGN_II => Ok(GunjalaGondi::VowelSignIi),
VOWEL_SIGN_U => Ok(GunjalaGondi::VowelSignU),
VOWEL_SIGN_UU => Ok(GunjalaGondi::VowelSignUu),
VOWEL_SIGN_EE => Ok(GunjalaGondi::VowelSignEe),
VOWEL_SIGN_AI => Ok(GunjalaGondi::VowelSignAi),
VOWEL_SIGN_OO => Ok(GunjalaGondi::VowelSignOo),
VOWEL_SIGN_AU => Ok(GunjalaGondi::VowelSignAu),
SIGN_ANUSVARA => Ok(GunjalaGondi::SignAnusvara),
SIGN_VISARGA => Ok(GunjalaGondi::SignVisarga),
VIRAMA => Ok(GunjalaGondi::Virama),
OM => Ok(GunjalaGondi::Om),
DIGIT_ZERO => Ok(GunjalaGondi::DigitZero),
DIGIT_ONE => Ok(GunjalaGondi::DigitOne),
DIGIT_TWO => Ok(GunjalaGondi::DigitTwo),
DIGIT_THREE => Ok(GunjalaGondi::DigitThree),
DIGIT_FOUR => Ok(GunjalaGondi::DigitFour),
DIGIT_FIVE => Ok(GunjalaGondi::DigitFive),
DIGIT_SIX => Ok(GunjalaGondi::DigitSix),
DIGIT_SEVEN => Ok(GunjalaGondi::DigitSeven),
DIGIT_EIGHT => Ok(GunjalaGondi::DigitEight),
DIGIT_NINE => Ok(GunjalaGondi::DigitNine),
_ => Err(()),
}
}
}
impl Into<u32> for GunjalaGondi {
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 GunjalaGondi {
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 GunjalaGondi {
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 GunjalaGondi {
pub fn new() -> Self {
GunjalaGondi::LetterA
}
pub fn name(&self) -> &str {
match self {
GunjalaGondi::LetterA => "gunjala gondi letter a",
GunjalaGondi::LetterAa => "gunjala gondi letter aa",
GunjalaGondi::LetterI => "gunjala gondi letter i",
GunjalaGondi::LetterIi => "gunjala gondi letter ii",
GunjalaGondi::LetterU => "gunjala gondi letter u",
GunjalaGondi::LetterUu => "gunjala gondi letter uu",
GunjalaGondi::LetterEe => "gunjala gondi letter ee",
GunjalaGondi::LetterAi => "gunjala gondi letter ai",
GunjalaGondi::LetterOo => "gunjala gondi letter oo",
GunjalaGondi::LetterAu => "gunjala gondi letter au",
GunjalaGondi::LetterYa => "gunjala gondi letter ya",
GunjalaGondi::LetterVa => "gunjala gondi letter va",
GunjalaGondi::LetterBa => "gunjala gondi letter ba",
GunjalaGondi::LetterBha => "gunjala gondi letter bha",
GunjalaGondi::LetterMa => "gunjala gondi letter ma",
GunjalaGondi::LetterKa => "gunjala gondi letter ka",
GunjalaGondi::LetterKha => "gunjala gondi letter kha",
GunjalaGondi::LetterTa => "gunjala gondi letter ta",
GunjalaGondi::LetterTha => "gunjala gondi letter tha",
GunjalaGondi::LetterLa => "gunjala gondi letter la",
GunjalaGondi::LetterGa => "gunjala gondi letter ga",
GunjalaGondi::LetterGha => "gunjala gondi letter gha",
GunjalaGondi::LetterDa => "gunjala gondi letter da",
GunjalaGondi::LetterDha => "gunjala gondi letter dha",
GunjalaGondi::LetterNa => "gunjala gondi letter na",
GunjalaGondi::LetterCa => "gunjala gondi letter ca",
GunjalaGondi::LetterCha => "gunjala gondi letter cha",
GunjalaGondi::LetterTta => "gunjala gondi letter tta",
GunjalaGondi::LetterTtha => "gunjala gondi letter ttha",
GunjalaGondi::LetterLla => "gunjala gondi letter lla",
GunjalaGondi::LetterJa => "gunjala gondi letter ja",
GunjalaGondi::LetterJha => "gunjala gondi letter jha",
GunjalaGondi::LetterDda => "gunjala gondi letter dda",
GunjalaGondi::LetterDdha => "gunjala gondi letter ddha",
GunjalaGondi::LetterNga => "gunjala gondi letter nga",
GunjalaGondi::LetterPa => "gunjala gondi letter pa",
GunjalaGondi::LetterPha => "gunjala gondi letter pha",
GunjalaGondi::LetterHa => "gunjala gondi letter ha",
GunjalaGondi::LetterRa => "gunjala gondi letter ra",
GunjalaGondi::LetterSa => "gunjala gondi letter sa",
GunjalaGondi::VowelSignAa => "gunjala gondi vowel sign aa",
GunjalaGondi::VowelSignI => "gunjala gondi vowel sign i",
GunjalaGondi::VowelSignIi => "gunjala gondi vowel sign ii",
GunjalaGondi::VowelSignU => "gunjala gondi vowel sign u",
GunjalaGondi::VowelSignUu => "gunjala gondi vowel sign uu",
GunjalaGondi::VowelSignEe => "gunjala gondi vowel sign ee",
GunjalaGondi::VowelSignAi => "gunjala gondi vowel sign ai",
GunjalaGondi::VowelSignOo => "gunjala gondi vowel sign oo",
GunjalaGondi::VowelSignAu => "gunjala gondi vowel sign au",
GunjalaGondi::SignAnusvara => "gunjala gondi sign anusvara",
GunjalaGondi::SignVisarga => "gunjala gondi sign visarga",
GunjalaGondi::Virama => "gunjala gondi virama",
GunjalaGondi::Om => "gunjala gondi om",
GunjalaGondi::DigitZero => "gunjala gondi digit zero",
GunjalaGondi::DigitOne => "gunjala gondi digit one",
GunjalaGondi::DigitTwo => "gunjala gondi digit two",
GunjalaGondi::DigitThree => "gunjala gondi digit three",
GunjalaGondi::DigitFour => "gunjala gondi digit four",
GunjalaGondi::DigitFive => "gunjala gondi digit five",
GunjalaGondi::DigitSix => "gunjala gondi digit six",
GunjalaGondi::DigitSeven => "gunjala gondi digit seven",
GunjalaGondi::DigitEight => "gunjala gondi digit eight",
GunjalaGondi::DigitNine => "gunjala gondi digit nine",
}
}
}