#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Tirhuta {
Anji,
LetterA,
LetterAa,
LetterI,
LetterIi,
LetterU,
LetterUu,
LetterVocalicR,
LetterVocalicRr,
LetterVocalicL,
LetterVocalicLl,
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,
VowelSignAa,
VowelSignI,
VowelSignIi,
VowelSignU,
VowelSignUu,
VowelSignVocalicR,
VowelSignVocalicRr,
VowelSignVocalicL,
VowelSignVocalicLl,
VowelSignE,
VowelSignShortE,
VowelSignAi,
VowelSignO,
VowelSignShortO,
VowelSignAu,
SignCandrabindu,
SignAnusvara,
SignVisarga,
SignVirama,
SignNukta,
SignAvagraha,
Gvang,
AbbreviationSign,
Om,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
}
impl Into<char> for Tirhuta {
fn into(self) -> char {
match self {
Tirhuta::Anji => '𑒀',
Tirhuta::LetterA => '𑒁',
Tirhuta::LetterAa => '𑒂',
Tirhuta::LetterI => '𑒃',
Tirhuta::LetterIi => '𑒄',
Tirhuta::LetterU => '𑒅',
Tirhuta::LetterUu => '𑒆',
Tirhuta::LetterVocalicR => '𑒇',
Tirhuta::LetterVocalicRr => '𑒈',
Tirhuta::LetterVocalicL => '𑒉',
Tirhuta::LetterVocalicLl => '𑒊',
Tirhuta::LetterE => '𑒋',
Tirhuta::LetterAi => '𑒌',
Tirhuta::LetterO => '𑒍',
Tirhuta::LetterAu => '𑒎',
Tirhuta::LetterKa => '𑒏',
Tirhuta::LetterKha => '𑒐',
Tirhuta::LetterGa => '𑒑',
Tirhuta::LetterGha => '𑒒',
Tirhuta::LetterNga => '𑒓',
Tirhuta::LetterCa => '𑒔',
Tirhuta::LetterCha => '𑒕',
Tirhuta::LetterJa => '𑒖',
Tirhuta::LetterJha => '𑒗',
Tirhuta::LetterNya => '𑒘',
Tirhuta::LetterTta => '𑒙',
Tirhuta::LetterTtha => '𑒚',
Tirhuta::LetterDda => '𑒛',
Tirhuta::LetterDdha => '𑒜',
Tirhuta::LetterNna => '𑒝',
Tirhuta::LetterTa => '𑒞',
Tirhuta::LetterTha => '𑒟',
Tirhuta::LetterDa => '𑒠',
Tirhuta::LetterDha => '𑒡',
Tirhuta::LetterNa => '𑒢',
Tirhuta::LetterPa => '𑒣',
Tirhuta::LetterPha => '𑒤',
Tirhuta::LetterBa => '𑒥',
Tirhuta::LetterBha => '𑒦',
Tirhuta::LetterMa => '𑒧',
Tirhuta::LetterYa => '𑒨',
Tirhuta::LetterRa => '𑒩',
Tirhuta::LetterLa => '𑒪',
Tirhuta::LetterVa => '𑒫',
Tirhuta::LetterSha => '𑒬',
Tirhuta::LetterSsa => '𑒭',
Tirhuta::LetterSa => '𑒮',
Tirhuta::LetterHa => '𑒯',
Tirhuta::VowelSignAa => '𑒰',
Tirhuta::VowelSignI => '𑒱',
Tirhuta::VowelSignIi => '𑒲',
Tirhuta::VowelSignU => '𑒳',
Tirhuta::VowelSignUu => '𑒴',
Tirhuta::VowelSignVocalicR => '𑒵',
Tirhuta::VowelSignVocalicRr => '𑒶',
Tirhuta::VowelSignVocalicL => '𑒷',
Tirhuta::VowelSignVocalicLl => '𑒸',
Tirhuta::VowelSignE => '𑒹',
Tirhuta::VowelSignShortE => '𑒺',
Tirhuta::VowelSignAi => '𑒻',
Tirhuta::VowelSignO => '𑒼',
Tirhuta::VowelSignShortO => '𑒽',
Tirhuta::VowelSignAu => '𑒾',
Tirhuta::SignCandrabindu => '𑒿',
Tirhuta::SignAnusvara => '𑓀',
Tirhuta::SignVisarga => '𑓁',
Tirhuta::SignVirama => '𑓂',
Tirhuta::SignNukta => '𑓃',
Tirhuta::SignAvagraha => '𑓄',
Tirhuta::Gvang => '𑓅',
Tirhuta::AbbreviationSign => '𑓆',
Tirhuta::Om => '𑓇',
Tirhuta::DigitZero => '𑓐',
Tirhuta::DigitOne => '𑓑',
Tirhuta::DigitTwo => '𑓒',
Tirhuta::DigitThree => '𑓓',
Tirhuta::DigitFour => '𑓔',
Tirhuta::DigitFive => '𑓕',
Tirhuta::DigitSix => '𑓖',
Tirhuta::DigitSeven => '𑓗',
Tirhuta::DigitEight => '𑓘',
Tirhuta::DigitNine => '𑓙',
}
}
}
impl std::convert::TryFrom<char> for Tirhuta {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'𑒀' => Ok(Tirhuta::Anji),
'𑒁' => Ok(Tirhuta::LetterA),
'𑒂' => Ok(Tirhuta::LetterAa),
'𑒃' => Ok(Tirhuta::LetterI),
'𑒄' => Ok(Tirhuta::LetterIi),
'𑒅' => Ok(Tirhuta::LetterU),
'𑒆' => Ok(Tirhuta::LetterUu),
'𑒇' => Ok(Tirhuta::LetterVocalicR),
'𑒈' => Ok(Tirhuta::LetterVocalicRr),
'𑒉' => Ok(Tirhuta::LetterVocalicL),
'𑒊' => Ok(Tirhuta::LetterVocalicLl),
'𑒋' => Ok(Tirhuta::LetterE),
'𑒌' => Ok(Tirhuta::LetterAi),
'𑒍' => Ok(Tirhuta::LetterO),
'𑒎' => Ok(Tirhuta::LetterAu),
'𑒏' => Ok(Tirhuta::LetterKa),
'𑒐' => Ok(Tirhuta::LetterKha),
'𑒑' => Ok(Tirhuta::LetterGa),
'𑒒' => Ok(Tirhuta::LetterGha),
'𑒓' => Ok(Tirhuta::LetterNga),
'𑒔' => Ok(Tirhuta::LetterCa),
'𑒕' => Ok(Tirhuta::LetterCha),
'𑒖' => Ok(Tirhuta::LetterJa),
'𑒗' => Ok(Tirhuta::LetterJha),
'𑒘' => Ok(Tirhuta::LetterNya),
'𑒙' => Ok(Tirhuta::LetterTta),
'𑒚' => Ok(Tirhuta::LetterTtha),
'𑒛' => Ok(Tirhuta::LetterDda),
'𑒜' => Ok(Tirhuta::LetterDdha),
'𑒝' => Ok(Tirhuta::LetterNna),
'𑒞' => Ok(Tirhuta::LetterTa),
'𑒟' => Ok(Tirhuta::LetterTha),
'𑒠' => Ok(Tirhuta::LetterDa),
'𑒡' => Ok(Tirhuta::LetterDha),
'𑒢' => Ok(Tirhuta::LetterNa),
'𑒣' => Ok(Tirhuta::LetterPa),
'𑒤' => Ok(Tirhuta::LetterPha),
'𑒥' => Ok(Tirhuta::LetterBa),
'𑒦' => Ok(Tirhuta::LetterBha),
'𑒧' => Ok(Tirhuta::LetterMa),
'𑒨' => Ok(Tirhuta::LetterYa),
'𑒩' => Ok(Tirhuta::LetterRa),
'𑒪' => Ok(Tirhuta::LetterLa),
'𑒫' => Ok(Tirhuta::LetterVa),
'𑒬' => Ok(Tirhuta::LetterSha),
'𑒭' => Ok(Tirhuta::LetterSsa),
'𑒮' => Ok(Tirhuta::LetterSa),
'𑒯' => Ok(Tirhuta::LetterHa),
'𑒰' => Ok(Tirhuta::VowelSignAa),
'𑒱' => Ok(Tirhuta::VowelSignI),
'𑒲' => Ok(Tirhuta::VowelSignIi),
'𑒳' => Ok(Tirhuta::VowelSignU),
'𑒴' => Ok(Tirhuta::VowelSignUu),
'𑒵' => Ok(Tirhuta::VowelSignVocalicR),
'𑒶' => Ok(Tirhuta::VowelSignVocalicRr),
'𑒷' => Ok(Tirhuta::VowelSignVocalicL),
'𑒸' => Ok(Tirhuta::VowelSignVocalicLl),
'𑒹' => Ok(Tirhuta::VowelSignE),
'𑒺' => Ok(Tirhuta::VowelSignShortE),
'𑒻' => Ok(Tirhuta::VowelSignAi),
'𑒼' => Ok(Tirhuta::VowelSignO),
'𑒽' => Ok(Tirhuta::VowelSignShortO),
'𑒾' => Ok(Tirhuta::VowelSignAu),
'𑒿' => Ok(Tirhuta::SignCandrabindu),
'𑓀' => Ok(Tirhuta::SignAnusvara),
'𑓁' => Ok(Tirhuta::SignVisarga),
'𑓂' => Ok(Tirhuta::SignVirama),
'𑓃' => Ok(Tirhuta::SignNukta),
'𑓄' => Ok(Tirhuta::SignAvagraha),
'𑓅' => Ok(Tirhuta::Gvang),
'𑓆' => Ok(Tirhuta::AbbreviationSign),
'𑓇' => Ok(Tirhuta::Om),
'𑓐' => Ok(Tirhuta::DigitZero),
'𑓑' => Ok(Tirhuta::DigitOne),
'𑓒' => Ok(Tirhuta::DigitTwo),
'𑓓' => Ok(Tirhuta::DigitThree),
'𑓔' => Ok(Tirhuta::DigitFour),
'𑓕' => Ok(Tirhuta::DigitFive),
'𑓖' => Ok(Tirhuta::DigitSix),
'𑓗' => Ok(Tirhuta::DigitSeven),
'𑓘' => Ok(Tirhuta::DigitEight),
'𑓙' => Ok(Tirhuta::DigitNine),
_ => Err(()),
}
}
}
impl Into<u32> for Tirhuta {
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 Tirhuta {
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 Tirhuta {
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 Tirhuta {
pub fn new() -> Self {
Tirhuta::Anji
}
pub fn name(&self) -> String {
let s = std::format!("Tirhuta{:#?}", self);
string_morph::to_sentence_case(&s)
}
}