#[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 {
match self {
Nandinagari::LetterA => '๐ฆ ',
Nandinagari::LetterAa => '๐ฆก',
Nandinagari::LetterI => '๐ฆข',
Nandinagari::LetterIi => '๐ฆฃ',
Nandinagari::LetterU => '๐ฆค',
Nandinagari::LetterUu => '๐ฆฅ',
Nandinagari::LetterVocalicR => '๐ฆฆ',
Nandinagari::LetterVocalicRr => '๐ฆง',
Nandinagari::LetterE => '๐ฆช',
Nandinagari::LetterAi => '๐ฆซ',
Nandinagari::LetterO => '๐ฆฌ',
Nandinagari::LetterAu => '๐ฆญ',
Nandinagari::LetterKa => '๐ฆฎ',
Nandinagari::LetterKha => '๐ฆฏ',
Nandinagari::LetterGa => '๐ฆฐ',
Nandinagari::LetterGha => '๐ฆฑ',
Nandinagari::LetterNga => '๐ฆฒ',
Nandinagari::LetterCa => '๐ฆณ',
Nandinagari::LetterCha => '๐ฆด',
Nandinagari::LetterJa => '๐ฆต',
Nandinagari::LetterJha => '๐ฆถ',
Nandinagari::LetterNya => '๐ฆท',
Nandinagari::LetterTta => '๐ฆธ',
Nandinagari::LetterTtha => '๐ฆน',
Nandinagari::LetterDda => '๐ฆบ',
Nandinagari::LetterDdha => '๐ฆป',
Nandinagari::LetterNna => '๐ฆผ',
Nandinagari::LetterTa => '๐ฆฝ',
Nandinagari::LetterTha => '๐ฆพ',
Nandinagari::LetterDa => '๐ฆฟ',
Nandinagari::LetterDha => '๐ง',
Nandinagari::LetterNa => '๐ง',
Nandinagari::LetterPa => '๐ง',
Nandinagari::LetterPha => '๐ง',
Nandinagari::LetterBa => '๐ง',
Nandinagari::LetterBha => '๐ง
',
Nandinagari::LetterMa => '๐ง',
Nandinagari::LetterYa => '๐ง',
Nandinagari::LetterRa => '๐ง',
Nandinagari::LetterLa => '๐ง',
Nandinagari::LetterVa => '๐ง',
Nandinagari::LetterSha => '๐ง',
Nandinagari::LetterSsa => '๐ง',
Nandinagari::LetterSa => '๐ง',
Nandinagari::LetterHa => '๐ง',
Nandinagari::LetterLla => '๐ง',
Nandinagari::LetterRra => '๐ง',
Nandinagari::VowelSignAa => '๐ง',
Nandinagari::VowelSignI => '๐ง',
Nandinagari::VowelSignIi => '๐ง',
Nandinagari::VowelSignU => '๐ง',
Nandinagari::VowelSignUu => '๐ง',
Nandinagari::VowelSignVocalicR => '๐ง',
Nandinagari::VowelSignVocalicRr => '๐ง',
Nandinagari::VowelSignE => '๐ง',
Nandinagari::VowelSignAi => '๐ง',
Nandinagari::VowelSignO => '๐ง',
Nandinagari::VowelSignAu => '๐ง',
Nandinagari::SignAnusvara => '๐ง',
Nandinagari::SignVisarga => '๐ง',
Nandinagari::SignVirama => '๐ง ',
Nandinagari::SignAvagraha => '๐งก',
Nandinagari::SignSiddham => '๐งข',
Nandinagari::Headstroke => '๐งฃ',
Nandinagari::VowelSignPrishthamatraE => '๐งค',
}
}
}
impl std::convert::TryFrom<char> for Nandinagari {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'๐ฆ ' => Ok(Nandinagari::LetterA),
'๐ฆก' => Ok(Nandinagari::LetterAa),
'๐ฆข' => Ok(Nandinagari::LetterI),
'๐ฆฃ' => Ok(Nandinagari::LetterIi),
'๐ฆค' => Ok(Nandinagari::LetterU),
'๐ฆฅ' => Ok(Nandinagari::LetterUu),
'๐ฆฆ' => Ok(Nandinagari::LetterVocalicR),
'๐ฆง' => Ok(Nandinagari::LetterVocalicRr),
'๐ฆช' => Ok(Nandinagari::LetterE),
'๐ฆซ' => Ok(Nandinagari::LetterAi),
'๐ฆฌ' => Ok(Nandinagari::LetterO),
'๐ฆญ' => Ok(Nandinagari::LetterAu),
'๐ฆฎ' => Ok(Nandinagari::LetterKa),
'๐ฆฏ' => Ok(Nandinagari::LetterKha),
'๐ฆฐ' => Ok(Nandinagari::LetterGa),
'๐ฆฑ' => Ok(Nandinagari::LetterGha),
'๐ฆฒ' => Ok(Nandinagari::LetterNga),
'๐ฆณ' => Ok(Nandinagari::LetterCa),
'๐ฆด' => Ok(Nandinagari::LetterCha),
'๐ฆต' => Ok(Nandinagari::LetterJa),
'๐ฆถ' => Ok(Nandinagari::LetterJha),
'๐ฆท' => Ok(Nandinagari::LetterNya),
'๐ฆธ' => Ok(Nandinagari::LetterTta),
'๐ฆน' => Ok(Nandinagari::LetterTtha),
'๐ฆบ' => Ok(Nandinagari::LetterDda),
'๐ฆป' => Ok(Nandinagari::LetterDdha),
'๐ฆผ' => Ok(Nandinagari::LetterNna),
'๐ฆฝ' => Ok(Nandinagari::LetterTa),
'๐ฆพ' => Ok(Nandinagari::LetterTha),
'๐ฆฟ' => Ok(Nandinagari::LetterDa),
'๐ง' => Ok(Nandinagari::LetterDha),
'๐ง' => Ok(Nandinagari::LetterNa),
'๐ง' => Ok(Nandinagari::LetterPa),
'๐ง' => Ok(Nandinagari::LetterPha),
'๐ง' => Ok(Nandinagari::LetterBa),
'๐ง
' => Ok(Nandinagari::LetterBha),
'๐ง' => Ok(Nandinagari::LetterMa),
'๐ง' => Ok(Nandinagari::LetterYa),
'๐ง' => Ok(Nandinagari::LetterRa),
'๐ง' => Ok(Nandinagari::LetterLa),
'๐ง' => Ok(Nandinagari::LetterVa),
'๐ง' => Ok(Nandinagari::LetterSha),
'๐ง' => Ok(Nandinagari::LetterSsa),
'๐ง' => Ok(Nandinagari::LetterSa),
'๐ง' => Ok(Nandinagari::LetterHa),
'๐ง' => Ok(Nandinagari::LetterLla),
'๐ง' => Ok(Nandinagari::LetterRra),
'๐ง' => Ok(Nandinagari::VowelSignAa),
'๐ง' => Ok(Nandinagari::VowelSignI),
'๐ง' => Ok(Nandinagari::VowelSignIi),
'๐ง' => Ok(Nandinagari::VowelSignU),
'๐ง' => Ok(Nandinagari::VowelSignUu),
'๐ง' => Ok(Nandinagari::VowelSignVocalicR),
'๐ง' => Ok(Nandinagari::VowelSignVocalicRr),
'๐ง' => Ok(Nandinagari::VowelSignE),
'๐ง' => Ok(Nandinagari::VowelSignAi),
'๐ง' => Ok(Nandinagari::VowelSignO),
'๐ง' => Ok(Nandinagari::VowelSignAu),
'๐ง' => Ok(Nandinagari::SignAnusvara),
'๐ง' => Ok(Nandinagari::SignVisarga),
'๐ง ' => Ok(Nandinagari::SignVirama),
'๐งก' => Ok(Nandinagari::SignAvagraha),
'๐งข' => Ok(Nandinagari::SignSiddham),
'๐งฃ' => Ok(Nandinagari::Headstroke),
'๐งค' => 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) -> String {
let s = std::format!("Nandinagari{:#?}", self);
string_morph::to_sentence_case(&s)
}
}