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_VOCALIC_R: char = '𑦦';
pub const LETTER_VOCALIC_RR: 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_RRA: 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_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_VIRAMA: char = '𑧠';
pub const SIGN_AVAGRAHA: char = '𑧡';
pub const SIGN_SIDDHAM: char = '𑧢';
pub const HEADSTROKE: char = '𑧣';
pub const VOWEL_SIGN_PRISHTHAMATRA_E: char = '𑧤';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Nandinagari {
LetterA,
LetterAa,
LetterI,
LetterIi,
LetterU,
LetterUu,
LetterVocalicR,
LetterVocalicRr,
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,
LetterRra,
VowelSignAa,
VowelSignI,
VowelSignIi,
VowelSignU,
VowelSignUu,
VowelSignVocalicR,
VowelSignVocalicRr,
VowelSignE,
VowelSignAi,
VowelSignO,
VowelSignAu,
SignAnusvara,
SignVisarga,
SignVirama,
SignAvagraha,
SignSiddham,
Headstroke,
VowelSignPrishthamatraE,
}
impl Into<char> for Nandinagari {
fn into(self) -> char {
use constants::*;
match self {
Nandinagari::LetterA => LETTER_A,
Nandinagari::LetterAa => LETTER_AA,
Nandinagari::LetterI => LETTER_I,
Nandinagari::LetterIi => LETTER_II,
Nandinagari::LetterU => LETTER_U,
Nandinagari::LetterUu => LETTER_UU,
Nandinagari::LetterVocalicR => LETTER_VOCALIC_R,
Nandinagari::LetterVocalicRr => LETTER_VOCALIC_RR,
Nandinagari::LetterE => LETTER_E,
Nandinagari::LetterAi => LETTER_AI,
Nandinagari::LetterO => LETTER_O,
Nandinagari::LetterAu => LETTER_AU,
Nandinagari::LetterKa => LETTER_KA,
Nandinagari::LetterKha => LETTER_KHA,
Nandinagari::LetterGa => LETTER_GA,
Nandinagari::LetterGha => LETTER_GHA,
Nandinagari::LetterNga => LETTER_NGA,
Nandinagari::LetterCa => LETTER_CA,
Nandinagari::LetterCha => LETTER_CHA,
Nandinagari::LetterJa => LETTER_JA,
Nandinagari::LetterJha => LETTER_JHA,
Nandinagari::LetterNya => LETTER_NYA,
Nandinagari::LetterTta => LETTER_TTA,
Nandinagari::LetterTtha => LETTER_TTHA,
Nandinagari::LetterDda => LETTER_DDA,
Nandinagari::LetterDdha => LETTER_DDHA,
Nandinagari::LetterNna => LETTER_NNA,
Nandinagari::LetterTa => LETTER_TA,
Nandinagari::LetterTha => LETTER_THA,
Nandinagari::LetterDa => LETTER_DA,
Nandinagari::LetterDha => LETTER_DHA,
Nandinagari::LetterNa => LETTER_NA,
Nandinagari::LetterPa => LETTER_PA,
Nandinagari::LetterPha => LETTER_PHA,
Nandinagari::LetterBa => LETTER_BA,
Nandinagari::LetterBha => LETTER_BHA,
Nandinagari::LetterMa => LETTER_MA,
Nandinagari::LetterYa => LETTER_YA,
Nandinagari::LetterRa => LETTER_RA,
Nandinagari::LetterLa => LETTER_LA,
Nandinagari::LetterVa => LETTER_VA,
Nandinagari::LetterSha => LETTER_SHA,
Nandinagari::LetterSsa => LETTER_SSA,
Nandinagari::LetterSa => LETTER_SA,
Nandinagari::LetterHa => LETTER_HA,
Nandinagari::LetterLla => LETTER_LLA,
Nandinagari::LetterRra => LETTER_RRA,
Nandinagari::VowelSignAa => VOWEL_SIGN_AA,
Nandinagari::VowelSignI => VOWEL_SIGN_I,
Nandinagari::VowelSignIi => VOWEL_SIGN_II,
Nandinagari::VowelSignU => VOWEL_SIGN_U,
Nandinagari::VowelSignUu => VOWEL_SIGN_UU,
Nandinagari::VowelSignVocalicR => VOWEL_SIGN_VOCALIC_R,
Nandinagari::VowelSignVocalicRr => VOWEL_SIGN_VOCALIC_RR,
Nandinagari::VowelSignE => VOWEL_SIGN_E,
Nandinagari::VowelSignAi => VOWEL_SIGN_AI,
Nandinagari::VowelSignO => VOWEL_SIGN_O,
Nandinagari::VowelSignAu => VOWEL_SIGN_AU,
Nandinagari::SignAnusvara => SIGN_ANUSVARA,
Nandinagari::SignVisarga => SIGN_VISARGA,
Nandinagari::SignVirama => SIGN_VIRAMA,
Nandinagari::SignAvagraha => SIGN_AVAGRAHA,
Nandinagari::SignSiddham => SIGN_SIDDHAM,
Nandinagari::Headstroke => HEADSTROKE,
Nandinagari::VowelSignPrishthamatraE => VOWEL_SIGN_PRISHTHAMATRA_E,
}
}
}
impl std::convert::TryFrom<char> for Nandinagari {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
LETTER_A => Ok(Nandinagari::LetterA),
LETTER_AA => Ok(Nandinagari::LetterAa),
LETTER_I => Ok(Nandinagari::LetterI),
LETTER_II => Ok(Nandinagari::LetterIi),
LETTER_U => Ok(Nandinagari::LetterU),
LETTER_UU => Ok(Nandinagari::LetterUu),
LETTER_VOCALIC_R => Ok(Nandinagari::LetterVocalicR),
LETTER_VOCALIC_RR => Ok(Nandinagari::LetterVocalicRr),
LETTER_E => Ok(Nandinagari::LetterE),
LETTER_AI => Ok(Nandinagari::LetterAi),
LETTER_O => Ok(Nandinagari::LetterO),
LETTER_AU => Ok(Nandinagari::LetterAu),
LETTER_KA => Ok(Nandinagari::LetterKa),
LETTER_KHA => Ok(Nandinagari::LetterKha),
LETTER_GA => Ok(Nandinagari::LetterGa),
LETTER_GHA => Ok(Nandinagari::LetterGha),
LETTER_NGA => Ok(Nandinagari::LetterNga),
LETTER_CA => Ok(Nandinagari::LetterCa),
LETTER_CHA => Ok(Nandinagari::LetterCha),
LETTER_JA => Ok(Nandinagari::LetterJa),
LETTER_JHA => Ok(Nandinagari::LetterJha),
LETTER_NYA => Ok(Nandinagari::LetterNya),
LETTER_TTA => Ok(Nandinagari::LetterTta),
LETTER_TTHA => Ok(Nandinagari::LetterTtha),
LETTER_DDA => Ok(Nandinagari::LetterDda),
LETTER_DDHA => Ok(Nandinagari::LetterDdha),
LETTER_NNA => Ok(Nandinagari::LetterNna),
LETTER_TA => Ok(Nandinagari::LetterTa),
LETTER_THA => Ok(Nandinagari::LetterTha),
LETTER_DA => Ok(Nandinagari::LetterDa),
LETTER_DHA => Ok(Nandinagari::LetterDha),
LETTER_NA => Ok(Nandinagari::LetterNa),
LETTER_PA => Ok(Nandinagari::LetterPa),
LETTER_PHA => Ok(Nandinagari::LetterPha),
LETTER_BA => Ok(Nandinagari::LetterBa),
LETTER_BHA => Ok(Nandinagari::LetterBha),
LETTER_MA => Ok(Nandinagari::LetterMa),
LETTER_YA => Ok(Nandinagari::LetterYa),
LETTER_RA => Ok(Nandinagari::LetterRa),
LETTER_LA => Ok(Nandinagari::LetterLa),
LETTER_VA => Ok(Nandinagari::LetterVa),
LETTER_SHA => Ok(Nandinagari::LetterSha),
LETTER_SSA => Ok(Nandinagari::LetterSsa),
LETTER_SA => Ok(Nandinagari::LetterSa),
LETTER_HA => Ok(Nandinagari::LetterHa),
LETTER_LLA => Ok(Nandinagari::LetterLla),
LETTER_RRA => Ok(Nandinagari::LetterRra),
VOWEL_SIGN_AA => Ok(Nandinagari::VowelSignAa),
VOWEL_SIGN_I => Ok(Nandinagari::VowelSignI),
VOWEL_SIGN_II => Ok(Nandinagari::VowelSignIi),
VOWEL_SIGN_U => Ok(Nandinagari::VowelSignU),
VOWEL_SIGN_UU => Ok(Nandinagari::VowelSignUu),
VOWEL_SIGN_VOCALIC_R => Ok(Nandinagari::VowelSignVocalicR),
VOWEL_SIGN_VOCALIC_RR => Ok(Nandinagari::VowelSignVocalicRr),
VOWEL_SIGN_E => Ok(Nandinagari::VowelSignE),
VOWEL_SIGN_AI => Ok(Nandinagari::VowelSignAi),
VOWEL_SIGN_O => Ok(Nandinagari::VowelSignO),
VOWEL_SIGN_AU => Ok(Nandinagari::VowelSignAu),
SIGN_ANUSVARA => Ok(Nandinagari::SignAnusvara),
SIGN_VISARGA => Ok(Nandinagari::SignVisarga),
SIGN_VIRAMA => Ok(Nandinagari::SignVirama),
SIGN_AVAGRAHA => Ok(Nandinagari::SignAvagraha),
SIGN_SIDDHAM => Ok(Nandinagari::SignSiddham),
HEADSTROKE => Ok(Nandinagari::Headstroke),
VOWEL_SIGN_PRISHTHAMATRA_E => Ok(Nandinagari::VowelSignPrishthamatraE),
_ => Err(()),
}
}
}
impl Into<u32> for Nandinagari {
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 Nandinagari {
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 Nandinagari {
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 Nandinagari {
pub fn new() -> Self {
Nandinagari::LetterA
}
pub fn name(&self) -> &str {
match self {
Nandinagari::LetterA => "nandinagari letter a",
Nandinagari::LetterAa => "nandinagari letter aa",
Nandinagari::LetterI => "nandinagari letter i",
Nandinagari::LetterIi => "nandinagari letter ii",
Nandinagari::LetterU => "nandinagari letter u",
Nandinagari::LetterUu => "nandinagari letter uu",
Nandinagari::LetterVocalicR => "nandinagari letter vocalic r",
Nandinagari::LetterVocalicRr => "nandinagari letter vocalic rr",
Nandinagari::LetterE => "nandinagari letter e",
Nandinagari::LetterAi => "nandinagari letter ai",
Nandinagari::LetterO => "nandinagari letter o",
Nandinagari::LetterAu => "nandinagari letter au",
Nandinagari::LetterKa => "nandinagari letter ka",
Nandinagari::LetterKha => "nandinagari letter kha",
Nandinagari::LetterGa => "nandinagari letter ga",
Nandinagari::LetterGha => "nandinagari letter gha",
Nandinagari::LetterNga => "nandinagari letter nga",
Nandinagari::LetterCa => "nandinagari letter ca",
Nandinagari::LetterCha => "nandinagari letter cha",
Nandinagari::LetterJa => "nandinagari letter ja",
Nandinagari::LetterJha => "nandinagari letter jha",
Nandinagari::LetterNya => "nandinagari letter nya",
Nandinagari::LetterTta => "nandinagari letter tta",
Nandinagari::LetterTtha => "nandinagari letter ttha",
Nandinagari::LetterDda => "nandinagari letter dda",
Nandinagari::LetterDdha => "nandinagari letter ddha",
Nandinagari::LetterNna => "nandinagari letter nna",
Nandinagari::LetterTa => "nandinagari letter ta",
Nandinagari::LetterTha => "nandinagari letter tha",
Nandinagari::LetterDa => "nandinagari letter da",
Nandinagari::LetterDha => "nandinagari letter dha",
Nandinagari::LetterNa => "nandinagari letter na",
Nandinagari::LetterPa => "nandinagari letter pa",
Nandinagari::LetterPha => "nandinagari letter pha",
Nandinagari::LetterBa => "nandinagari letter ba",
Nandinagari::LetterBha => "nandinagari letter bha",
Nandinagari::LetterMa => "nandinagari letter ma",
Nandinagari::LetterYa => "nandinagari letter ya",
Nandinagari::LetterRa => "nandinagari letter ra",
Nandinagari::LetterLa => "nandinagari letter la",
Nandinagari::LetterVa => "nandinagari letter va",
Nandinagari::LetterSha => "nandinagari letter sha",
Nandinagari::LetterSsa => "nandinagari letter ssa",
Nandinagari::LetterSa => "nandinagari letter sa",
Nandinagari::LetterHa => "nandinagari letter ha",
Nandinagari::LetterLla => "nandinagari letter lla",
Nandinagari::LetterRra => "nandinagari letter rra",
Nandinagari::VowelSignAa => "nandinagari vowel sign aa",
Nandinagari::VowelSignI => "nandinagari vowel sign i",
Nandinagari::VowelSignIi => "nandinagari vowel sign ii",
Nandinagari::VowelSignU => "nandinagari vowel sign u",
Nandinagari::VowelSignUu => "nandinagari vowel sign uu",
Nandinagari::VowelSignVocalicR => "nandinagari vowel sign vocalic r",
Nandinagari::VowelSignVocalicRr => "nandinagari vowel sign vocalic rr",
Nandinagari::VowelSignE => "nandinagari vowel sign e",
Nandinagari::VowelSignAi => "nandinagari vowel sign ai",
Nandinagari::VowelSignO => "nandinagari vowel sign o",
Nandinagari::VowelSignAu => "nandinagari vowel sign au",
Nandinagari::SignAnusvara => "nandinagari sign anusvara",
Nandinagari::SignVisarga => "nandinagari sign visarga",
Nandinagari::SignVirama => "nandinagari sign virama",
Nandinagari::SignAvagraha => "nandinagari sign avagraha",
Nandinagari::SignSiddham => "nandinagari sign siddham",
Nandinagari::Headstroke => "nandinagari headstroke",
Nandinagari::VowelSignPrishthamatraE => "nandinagari vowel sign prishthamatra e",
}
}
}