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_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 LETTER_LLA: char = '𑴭';
pub const LETTER_KSSA: char = '𑴮';
pub const LETTER_JNYA: char = '𑴯';
pub const LETTER_TRA: 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_E: char = '𑴺';
pub const VOWEL_SIGN_AI: char = '𑴼';
pub const VOWEL_SIGN_O: char = '𑴽';
pub const VOWEL_SIGN_AU: char = '𑴿';
pub const SIGN_ANUSVARA: char = '𑵀';
pub const SIGN_VISARGA: char = '𑵁';
pub const SIGN_NUKTA: char = '𑵂';
pub const SIGN_CANDRA: char = '𑵃';
pub const SIGN_HALANTA: char = '𑵄';
pub const VIRAMA: char = '𑵅';
pub const REPHA: char = '𑵆';
pub const RA_DASH_KARA: 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 MasaramGondi {
LetterA,
LetterAa,
LetterI,
LetterIi,
LetterU,
LetterUu,
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,
LetterLla,
LetterKssa,
LetterJnya,
LetterTra,
VowelSignAa,
VowelSignI,
VowelSignIi,
VowelSignU,
VowelSignUu,
VowelSignVocalicR,
VowelSignE,
VowelSignAi,
VowelSignO,
VowelSignAu,
SignAnusvara,
SignVisarga,
SignNukta,
SignCandra,
SignHalanta,
Virama,
Repha,
RaDashKara,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
}
impl Into<char> for MasaramGondi {
fn into(self) -> char {
use constants::*;
match self {
MasaramGondi::LetterA => LETTER_A,
MasaramGondi::LetterAa => LETTER_AA,
MasaramGondi::LetterI => LETTER_I,
MasaramGondi::LetterIi => LETTER_II,
MasaramGondi::LetterU => LETTER_U,
MasaramGondi::LetterUu => LETTER_UU,
MasaramGondi::LetterE => LETTER_E,
MasaramGondi::LetterAi => LETTER_AI,
MasaramGondi::LetterO => LETTER_O,
MasaramGondi::LetterAu => LETTER_AU,
MasaramGondi::LetterKa => LETTER_KA,
MasaramGondi::LetterKha => LETTER_KHA,
MasaramGondi::LetterGa => LETTER_GA,
MasaramGondi::LetterGha => LETTER_GHA,
MasaramGondi::LetterNga => LETTER_NGA,
MasaramGondi::LetterCa => LETTER_CA,
MasaramGondi::LetterCha => LETTER_CHA,
MasaramGondi::LetterJa => LETTER_JA,
MasaramGondi::LetterJha => LETTER_JHA,
MasaramGondi::LetterNya => LETTER_NYA,
MasaramGondi::LetterTta => LETTER_TTA,
MasaramGondi::LetterTtha => LETTER_TTHA,
MasaramGondi::LetterDda => LETTER_DDA,
MasaramGondi::LetterDdha => LETTER_DDHA,
MasaramGondi::LetterNna => LETTER_NNA,
MasaramGondi::LetterTa => LETTER_TA,
MasaramGondi::LetterTha => LETTER_THA,
MasaramGondi::LetterDa => LETTER_DA,
MasaramGondi::LetterDha => LETTER_DHA,
MasaramGondi::LetterNa => LETTER_NA,
MasaramGondi::LetterPa => LETTER_PA,
MasaramGondi::LetterPha => LETTER_PHA,
MasaramGondi::LetterBa => LETTER_BA,
MasaramGondi::LetterBha => LETTER_BHA,
MasaramGondi::LetterMa => LETTER_MA,
MasaramGondi::LetterYa => LETTER_YA,
MasaramGondi::LetterRa => LETTER_RA,
MasaramGondi::LetterLa => LETTER_LA,
MasaramGondi::LetterVa => LETTER_VA,
MasaramGondi::LetterSha => LETTER_SHA,
MasaramGondi::LetterSsa => LETTER_SSA,
MasaramGondi::LetterSa => LETTER_SA,
MasaramGondi::LetterHa => LETTER_HA,
MasaramGondi::LetterLla => LETTER_LLA,
MasaramGondi::LetterKssa => LETTER_KSSA,
MasaramGondi::LetterJnya => LETTER_JNYA,
MasaramGondi::LetterTra => LETTER_TRA,
MasaramGondi::VowelSignAa => VOWEL_SIGN_AA,
MasaramGondi::VowelSignI => VOWEL_SIGN_I,
MasaramGondi::VowelSignIi => VOWEL_SIGN_II,
MasaramGondi::VowelSignU => VOWEL_SIGN_U,
MasaramGondi::VowelSignUu => VOWEL_SIGN_UU,
MasaramGondi::VowelSignVocalicR => VOWEL_SIGN_VOCALIC_R,
MasaramGondi::VowelSignE => VOWEL_SIGN_E,
MasaramGondi::VowelSignAi => VOWEL_SIGN_AI,
MasaramGondi::VowelSignO => VOWEL_SIGN_O,
MasaramGondi::VowelSignAu => VOWEL_SIGN_AU,
MasaramGondi::SignAnusvara => SIGN_ANUSVARA,
MasaramGondi::SignVisarga => SIGN_VISARGA,
MasaramGondi::SignNukta => SIGN_NUKTA,
MasaramGondi::SignCandra => SIGN_CANDRA,
MasaramGondi::SignHalanta => SIGN_HALANTA,
MasaramGondi::Virama => VIRAMA,
MasaramGondi::Repha => REPHA,
MasaramGondi::RaDashKara => RA_DASH_KARA,
MasaramGondi::DigitZero => DIGIT_ZERO,
MasaramGondi::DigitOne => DIGIT_ONE,
MasaramGondi::DigitTwo => DIGIT_TWO,
MasaramGondi::DigitThree => DIGIT_THREE,
MasaramGondi::DigitFour => DIGIT_FOUR,
MasaramGondi::DigitFive => DIGIT_FIVE,
MasaramGondi::DigitSix => DIGIT_SIX,
MasaramGondi::DigitSeven => DIGIT_SEVEN,
MasaramGondi::DigitEight => DIGIT_EIGHT,
MasaramGondi::DigitNine => DIGIT_NINE,
}
}
}
impl std::convert::TryFrom<char> for MasaramGondi {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
LETTER_A => Ok(MasaramGondi::LetterA),
LETTER_AA => Ok(MasaramGondi::LetterAa),
LETTER_I => Ok(MasaramGondi::LetterI),
LETTER_II => Ok(MasaramGondi::LetterIi),
LETTER_U => Ok(MasaramGondi::LetterU),
LETTER_UU => Ok(MasaramGondi::LetterUu),
LETTER_E => Ok(MasaramGondi::LetterE),
LETTER_AI => Ok(MasaramGondi::LetterAi),
LETTER_O => Ok(MasaramGondi::LetterO),
LETTER_AU => Ok(MasaramGondi::LetterAu),
LETTER_KA => Ok(MasaramGondi::LetterKa),
LETTER_KHA => Ok(MasaramGondi::LetterKha),
LETTER_GA => Ok(MasaramGondi::LetterGa),
LETTER_GHA => Ok(MasaramGondi::LetterGha),
LETTER_NGA => Ok(MasaramGondi::LetterNga),
LETTER_CA => Ok(MasaramGondi::LetterCa),
LETTER_CHA => Ok(MasaramGondi::LetterCha),
LETTER_JA => Ok(MasaramGondi::LetterJa),
LETTER_JHA => Ok(MasaramGondi::LetterJha),
LETTER_NYA => Ok(MasaramGondi::LetterNya),
LETTER_TTA => Ok(MasaramGondi::LetterTta),
LETTER_TTHA => Ok(MasaramGondi::LetterTtha),
LETTER_DDA => Ok(MasaramGondi::LetterDda),
LETTER_DDHA => Ok(MasaramGondi::LetterDdha),
LETTER_NNA => Ok(MasaramGondi::LetterNna),
LETTER_TA => Ok(MasaramGondi::LetterTa),
LETTER_THA => Ok(MasaramGondi::LetterTha),
LETTER_DA => Ok(MasaramGondi::LetterDa),
LETTER_DHA => Ok(MasaramGondi::LetterDha),
LETTER_NA => Ok(MasaramGondi::LetterNa),
LETTER_PA => Ok(MasaramGondi::LetterPa),
LETTER_PHA => Ok(MasaramGondi::LetterPha),
LETTER_BA => Ok(MasaramGondi::LetterBa),
LETTER_BHA => Ok(MasaramGondi::LetterBha),
LETTER_MA => Ok(MasaramGondi::LetterMa),
LETTER_YA => Ok(MasaramGondi::LetterYa),
LETTER_RA => Ok(MasaramGondi::LetterRa),
LETTER_LA => Ok(MasaramGondi::LetterLa),
LETTER_VA => Ok(MasaramGondi::LetterVa),
LETTER_SHA => Ok(MasaramGondi::LetterSha),
LETTER_SSA => Ok(MasaramGondi::LetterSsa),
LETTER_SA => Ok(MasaramGondi::LetterSa),
LETTER_HA => Ok(MasaramGondi::LetterHa),
LETTER_LLA => Ok(MasaramGondi::LetterLla),
LETTER_KSSA => Ok(MasaramGondi::LetterKssa),
LETTER_JNYA => Ok(MasaramGondi::LetterJnya),
LETTER_TRA => Ok(MasaramGondi::LetterTra),
VOWEL_SIGN_AA => Ok(MasaramGondi::VowelSignAa),
VOWEL_SIGN_I => Ok(MasaramGondi::VowelSignI),
VOWEL_SIGN_II => Ok(MasaramGondi::VowelSignIi),
VOWEL_SIGN_U => Ok(MasaramGondi::VowelSignU),
VOWEL_SIGN_UU => Ok(MasaramGondi::VowelSignUu),
VOWEL_SIGN_VOCALIC_R => Ok(MasaramGondi::VowelSignVocalicR),
VOWEL_SIGN_E => Ok(MasaramGondi::VowelSignE),
VOWEL_SIGN_AI => Ok(MasaramGondi::VowelSignAi),
VOWEL_SIGN_O => Ok(MasaramGondi::VowelSignO),
VOWEL_SIGN_AU => Ok(MasaramGondi::VowelSignAu),
SIGN_ANUSVARA => Ok(MasaramGondi::SignAnusvara),
SIGN_VISARGA => Ok(MasaramGondi::SignVisarga),
SIGN_NUKTA => Ok(MasaramGondi::SignNukta),
SIGN_CANDRA => Ok(MasaramGondi::SignCandra),
SIGN_HALANTA => Ok(MasaramGondi::SignHalanta),
VIRAMA => Ok(MasaramGondi::Virama),
REPHA => Ok(MasaramGondi::Repha),
RA_DASH_KARA => Ok(MasaramGondi::RaDashKara),
DIGIT_ZERO => Ok(MasaramGondi::DigitZero),
DIGIT_ONE => Ok(MasaramGondi::DigitOne),
DIGIT_TWO => Ok(MasaramGondi::DigitTwo),
DIGIT_THREE => Ok(MasaramGondi::DigitThree),
DIGIT_FOUR => Ok(MasaramGondi::DigitFour),
DIGIT_FIVE => Ok(MasaramGondi::DigitFive),
DIGIT_SIX => Ok(MasaramGondi::DigitSix),
DIGIT_SEVEN => Ok(MasaramGondi::DigitSeven),
DIGIT_EIGHT => Ok(MasaramGondi::DigitEight),
DIGIT_NINE => Ok(MasaramGondi::DigitNine),
_ => Err(()),
}
}
}
impl Into<u32> for MasaramGondi {
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 MasaramGondi {
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 MasaramGondi {
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 MasaramGondi {
pub fn new() -> Self {
MasaramGondi::LetterA
}
pub fn name(&self) -> &str {
match self {
MasaramGondi::LetterA => "masaram gondi letter a",
MasaramGondi::LetterAa => "masaram gondi letter aa",
MasaramGondi::LetterI => "masaram gondi letter i",
MasaramGondi::LetterIi => "masaram gondi letter ii",
MasaramGondi::LetterU => "masaram gondi letter u",
MasaramGondi::LetterUu => "masaram gondi letter uu",
MasaramGondi::LetterE => "masaram gondi letter e",
MasaramGondi::LetterAi => "masaram gondi letter ai",
MasaramGondi::LetterO => "masaram gondi letter o",
MasaramGondi::LetterAu => "masaram gondi letter au",
MasaramGondi::LetterKa => "masaram gondi letter ka",
MasaramGondi::LetterKha => "masaram gondi letter kha",
MasaramGondi::LetterGa => "masaram gondi letter ga",
MasaramGondi::LetterGha => "masaram gondi letter gha",
MasaramGondi::LetterNga => "masaram gondi letter nga",
MasaramGondi::LetterCa => "masaram gondi letter ca",
MasaramGondi::LetterCha => "masaram gondi letter cha",
MasaramGondi::LetterJa => "masaram gondi letter ja",
MasaramGondi::LetterJha => "masaram gondi letter jha",
MasaramGondi::LetterNya => "masaram gondi letter nya",
MasaramGondi::LetterTta => "masaram gondi letter tta",
MasaramGondi::LetterTtha => "masaram gondi letter ttha",
MasaramGondi::LetterDda => "masaram gondi letter dda",
MasaramGondi::LetterDdha => "masaram gondi letter ddha",
MasaramGondi::LetterNna => "masaram gondi letter nna",
MasaramGondi::LetterTa => "masaram gondi letter ta",
MasaramGondi::LetterTha => "masaram gondi letter tha",
MasaramGondi::LetterDa => "masaram gondi letter da",
MasaramGondi::LetterDha => "masaram gondi letter dha",
MasaramGondi::LetterNa => "masaram gondi letter na",
MasaramGondi::LetterPa => "masaram gondi letter pa",
MasaramGondi::LetterPha => "masaram gondi letter pha",
MasaramGondi::LetterBa => "masaram gondi letter ba",
MasaramGondi::LetterBha => "masaram gondi letter bha",
MasaramGondi::LetterMa => "masaram gondi letter ma",
MasaramGondi::LetterYa => "masaram gondi letter ya",
MasaramGondi::LetterRa => "masaram gondi letter ra",
MasaramGondi::LetterLa => "masaram gondi letter la",
MasaramGondi::LetterVa => "masaram gondi letter va",
MasaramGondi::LetterSha => "masaram gondi letter sha",
MasaramGondi::LetterSsa => "masaram gondi letter ssa",
MasaramGondi::LetterSa => "masaram gondi letter sa",
MasaramGondi::LetterHa => "masaram gondi letter ha",
MasaramGondi::LetterLla => "masaram gondi letter lla",
MasaramGondi::LetterKssa => "masaram gondi letter kssa",
MasaramGondi::LetterJnya => "masaram gondi letter jnya",
MasaramGondi::LetterTra => "masaram gondi letter tra",
MasaramGondi::VowelSignAa => "masaram gondi vowel sign aa",
MasaramGondi::VowelSignI => "masaram gondi vowel sign i",
MasaramGondi::VowelSignIi => "masaram gondi vowel sign ii",
MasaramGondi::VowelSignU => "masaram gondi vowel sign u",
MasaramGondi::VowelSignUu => "masaram gondi vowel sign uu",
MasaramGondi::VowelSignVocalicR => "masaram gondi vowel sign vocalic r",
MasaramGondi::VowelSignE => "masaram gondi vowel sign e",
MasaramGondi::VowelSignAi => "masaram gondi vowel sign ai",
MasaramGondi::VowelSignO => "masaram gondi vowel sign o",
MasaramGondi::VowelSignAu => "masaram gondi vowel sign au",
MasaramGondi::SignAnusvara => "masaram gondi sign anusvara",
MasaramGondi::SignVisarga => "masaram gondi sign visarga",
MasaramGondi::SignNukta => "masaram gondi sign nukta",
MasaramGondi::SignCandra => "masaram gondi sign candra",
MasaramGondi::SignHalanta => "masaram gondi sign halanta",
MasaramGondi::Virama => "masaram gondi virama",
MasaramGondi::Repha => "masaram gondi repha",
MasaramGondi::RaDashKara => "masaram gondi ra-kara",
MasaramGondi::DigitZero => "masaram gondi digit zero",
MasaramGondi::DigitOne => "masaram gondi digit one",
MasaramGondi::DigitTwo => "masaram gondi digit two",
MasaramGondi::DigitThree => "masaram gondi digit three",
MasaramGondi::DigitFour => "masaram gondi digit four",
MasaramGondi::DigitFive => "masaram gondi digit five",
MasaramGondi::DigitSix => "masaram gondi digit six",
MasaramGondi::DigitSeven => "masaram gondi digit seven",
MasaramGondi::DigitEight => "masaram gondi digit eight",
MasaramGondi::DigitNine => "masaram gondi digit nine",
}
}
}