#[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)
}
}