#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Saurashtra {
SignAnusvara,
SignVisarga,
LetterA,
LetterAa,
LetterI,
LetterIi,
LetterU,
LetterUu,
LetterVocalicR,
LetterVocalicRr,
LetterVocalicL,
LetterVocalicLl,
LetterE,
LetterEe,
LetterAi,
LetterO,
LetterOo,
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,
ConsonantSignHaaru,
VowelSignAa,
VowelSignI,
VowelSignIi,
VowelSignU,
VowelSignUu,
VowelSignVocalicR,
VowelSignVocalicRr,
VowelSignVocalicL,
VowelSignVocalicLl,
VowelSignE,
VowelSignEe,
VowelSignAi,
VowelSignO,
VowelSignOo,
VowelSignAu,
SignVirama,
SignCandrabindu,
Danda,
DoubleDanda,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
}
impl Into<char> for Saurashtra {
fn into(self) -> char {
match self {
Saurashtra::SignAnusvara => 'ꢀ',
Saurashtra::SignVisarga => 'ꢁ',
Saurashtra::LetterA => 'ꢂ',
Saurashtra::LetterAa => 'ꢃ',
Saurashtra::LetterI => 'ꢄ',
Saurashtra::LetterIi => 'ꢅ',
Saurashtra::LetterU => 'ꢆ',
Saurashtra::LetterUu => 'ꢇ',
Saurashtra::LetterVocalicR => 'ꢈ',
Saurashtra::LetterVocalicRr => 'ꢉ',
Saurashtra::LetterVocalicL => 'ꢊ',
Saurashtra::LetterVocalicLl => 'ꢋ',
Saurashtra::LetterE => 'ꢌ',
Saurashtra::LetterEe => 'ꢍ',
Saurashtra::LetterAi => 'ꢎ',
Saurashtra::LetterO => 'ꢏ',
Saurashtra::LetterOo => 'ꢐ',
Saurashtra::LetterAu => 'ꢑ',
Saurashtra::LetterKa => 'ꢒ',
Saurashtra::LetterKha => 'ꢓ',
Saurashtra::LetterGa => 'ꢔ',
Saurashtra::LetterGha => 'ꢕ',
Saurashtra::LetterNga => 'ꢖ',
Saurashtra::LetterCa => 'ꢗ',
Saurashtra::LetterCha => 'ꢘ',
Saurashtra::LetterJa => 'ꢙ',
Saurashtra::LetterJha => 'ꢚ',
Saurashtra::LetterNya => 'ꢛ',
Saurashtra::LetterTta => 'ꢜ',
Saurashtra::LetterTtha => 'ꢝ',
Saurashtra::LetterDda => 'ꢞ',
Saurashtra::LetterDdha => 'ꢟ',
Saurashtra::LetterNna => 'ꢠ',
Saurashtra::LetterTa => 'ꢡ',
Saurashtra::LetterTha => 'ꢢ',
Saurashtra::LetterDa => 'ꢣ',
Saurashtra::LetterDha => 'ꢤ',
Saurashtra::LetterNa => 'ꢥ',
Saurashtra::LetterPa => 'ꢦ',
Saurashtra::LetterPha => 'ꢧ',
Saurashtra::LetterBa => 'ꢨ',
Saurashtra::LetterBha => 'ꢩ',
Saurashtra::LetterMa => 'ꢪ',
Saurashtra::LetterYa => 'ꢫ',
Saurashtra::LetterRa => 'ꢬ',
Saurashtra::LetterLa => 'ꢭ',
Saurashtra::LetterVa => 'ꢮ',
Saurashtra::LetterSha => 'ꢯ',
Saurashtra::LetterSsa => 'ꢰ',
Saurashtra::LetterSa => 'ꢱ',
Saurashtra::LetterHa => 'ꢲ',
Saurashtra::LetterLla => 'ꢳ',
Saurashtra::ConsonantSignHaaru => 'ꢴ',
Saurashtra::VowelSignAa => 'ꢵ',
Saurashtra::VowelSignI => 'ꢶ',
Saurashtra::VowelSignIi => 'ꢷ',
Saurashtra::VowelSignU => 'ꢸ',
Saurashtra::VowelSignUu => 'ꢹ',
Saurashtra::VowelSignVocalicR => 'ꢺ',
Saurashtra::VowelSignVocalicRr => 'ꢻ',
Saurashtra::VowelSignVocalicL => 'ꢼ',
Saurashtra::VowelSignVocalicLl => 'ꢽ',
Saurashtra::VowelSignE => 'ꢾ',
Saurashtra::VowelSignEe => 'ꢿ',
Saurashtra::VowelSignAi => 'ꣀ',
Saurashtra::VowelSignO => 'ꣁ',
Saurashtra::VowelSignOo => 'ꣂ',
Saurashtra::VowelSignAu => 'ꣃ',
Saurashtra::SignVirama => '꣄',
Saurashtra::SignCandrabindu => 'ꣅ',
Saurashtra::Danda => '꣎',
Saurashtra::DoubleDanda => '꣏',
Saurashtra::DigitZero => '꣐',
Saurashtra::DigitOne => '꣑',
Saurashtra::DigitTwo => '꣒',
Saurashtra::DigitThree => '꣓',
Saurashtra::DigitFour => '꣔',
Saurashtra::DigitFive => '꣕',
Saurashtra::DigitSix => '꣖',
Saurashtra::DigitSeven => '꣗',
Saurashtra::DigitEight => '꣘',
Saurashtra::DigitNine => '꣙',
}
}
}
impl std::convert::TryFrom<char> for Saurashtra {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'ꢀ' => Ok(Saurashtra::SignAnusvara),
'ꢁ' => Ok(Saurashtra::SignVisarga),
'ꢂ' => Ok(Saurashtra::LetterA),
'ꢃ' => Ok(Saurashtra::LetterAa),
'ꢄ' => Ok(Saurashtra::LetterI),
'ꢅ' => Ok(Saurashtra::LetterIi),
'ꢆ' => Ok(Saurashtra::LetterU),
'ꢇ' => Ok(Saurashtra::LetterUu),
'ꢈ' => Ok(Saurashtra::LetterVocalicR),
'ꢉ' => Ok(Saurashtra::LetterVocalicRr),
'ꢊ' => Ok(Saurashtra::LetterVocalicL),
'ꢋ' => Ok(Saurashtra::LetterVocalicLl),
'ꢌ' => Ok(Saurashtra::LetterE),
'ꢍ' => Ok(Saurashtra::LetterEe),
'ꢎ' => Ok(Saurashtra::LetterAi),
'ꢏ' => Ok(Saurashtra::LetterO),
'ꢐ' => Ok(Saurashtra::LetterOo),
'ꢑ' => Ok(Saurashtra::LetterAu),
'ꢒ' => Ok(Saurashtra::LetterKa),
'ꢓ' => Ok(Saurashtra::LetterKha),
'ꢔ' => Ok(Saurashtra::LetterGa),
'ꢕ' => Ok(Saurashtra::LetterGha),
'ꢖ' => Ok(Saurashtra::LetterNga),
'ꢗ' => Ok(Saurashtra::LetterCa),
'ꢘ' => Ok(Saurashtra::LetterCha),
'ꢙ' => Ok(Saurashtra::LetterJa),
'ꢚ' => Ok(Saurashtra::LetterJha),
'ꢛ' => Ok(Saurashtra::LetterNya),
'ꢜ' => Ok(Saurashtra::LetterTta),
'ꢝ' => Ok(Saurashtra::LetterTtha),
'ꢞ' => Ok(Saurashtra::LetterDda),
'ꢟ' => Ok(Saurashtra::LetterDdha),
'ꢠ' => Ok(Saurashtra::LetterNna),
'ꢡ' => Ok(Saurashtra::LetterTa),
'ꢢ' => Ok(Saurashtra::LetterTha),
'ꢣ' => Ok(Saurashtra::LetterDa),
'ꢤ' => Ok(Saurashtra::LetterDha),
'ꢥ' => Ok(Saurashtra::LetterNa),
'ꢦ' => Ok(Saurashtra::LetterPa),
'ꢧ' => Ok(Saurashtra::LetterPha),
'ꢨ' => Ok(Saurashtra::LetterBa),
'ꢩ' => Ok(Saurashtra::LetterBha),
'ꢪ' => Ok(Saurashtra::LetterMa),
'ꢫ' => Ok(Saurashtra::LetterYa),
'ꢬ' => Ok(Saurashtra::LetterRa),
'ꢭ' => Ok(Saurashtra::LetterLa),
'ꢮ' => Ok(Saurashtra::LetterVa),
'ꢯ' => Ok(Saurashtra::LetterSha),
'ꢰ' => Ok(Saurashtra::LetterSsa),
'ꢱ' => Ok(Saurashtra::LetterSa),
'ꢲ' => Ok(Saurashtra::LetterHa),
'ꢳ' => Ok(Saurashtra::LetterLla),
'ꢴ' => Ok(Saurashtra::ConsonantSignHaaru),
'ꢵ' => Ok(Saurashtra::VowelSignAa),
'ꢶ' => Ok(Saurashtra::VowelSignI),
'ꢷ' => Ok(Saurashtra::VowelSignIi),
'ꢸ' => Ok(Saurashtra::VowelSignU),
'ꢹ' => Ok(Saurashtra::VowelSignUu),
'ꢺ' => Ok(Saurashtra::VowelSignVocalicR),
'ꢻ' => Ok(Saurashtra::VowelSignVocalicRr),
'ꢼ' => Ok(Saurashtra::VowelSignVocalicL),
'ꢽ' => Ok(Saurashtra::VowelSignVocalicLl),
'ꢾ' => Ok(Saurashtra::VowelSignE),
'ꢿ' => Ok(Saurashtra::VowelSignEe),
'ꣀ' => Ok(Saurashtra::VowelSignAi),
'ꣁ' => Ok(Saurashtra::VowelSignO),
'ꣂ' => Ok(Saurashtra::VowelSignOo),
'ꣃ' => Ok(Saurashtra::VowelSignAu),
'꣄' => Ok(Saurashtra::SignVirama),
'ꣅ' => Ok(Saurashtra::SignCandrabindu),
'꣎' => Ok(Saurashtra::Danda),
'꣏' => Ok(Saurashtra::DoubleDanda),
'꣐' => Ok(Saurashtra::DigitZero),
'꣑' => Ok(Saurashtra::DigitOne),
'꣒' => Ok(Saurashtra::DigitTwo),
'꣓' => Ok(Saurashtra::DigitThree),
'꣔' => Ok(Saurashtra::DigitFour),
'꣕' => Ok(Saurashtra::DigitFive),
'꣖' => Ok(Saurashtra::DigitSix),
'꣗' => Ok(Saurashtra::DigitSeven),
'꣘' => Ok(Saurashtra::DigitEight),
'꣙' => Ok(Saurashtra::DigitNine),
_ => Err(()),
}
}
}
impl Into<u32> for Saurashtra {
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 Saurashtra {
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 Saurashtra {
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 Saurashtra {
pub fn new() -> Self {
Saurashtra::SignAnusvara
}
pub fn name(&self) -> String {
let s = std::format!("Saurashtra{:#?}", self);
string_morph::to_sentence_case(&s)
}
}