#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Sharada {
SignCandrabindu,
SignAnusvara,
SignVisarga,
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,
LetterLla,
LetterVa,
LetterSha,
LetterSsa,
LetterSa,
LetterHa,
VowelSignAa,
VowelSignI,
VowelSignIi,
VowelSignU,
VowelSignUu,
VowelSignVocalicR,
VowelSignVocalicRr,
VowelSignVocalicL,
VowelSignVocalicLl,
VowelSignE,
VowelSignAi,
VowelSignO,
VowelSignAu,
SignVirama,
SignAvagraha,
SignJihvamuliya,
SignUpadhmaniya,
Om,
Danda,
DoubleDanda,
AbbreviationSign,
Separator,
SandhiMark,
SignNukta,
VowelModifierMark,
ExtraShortVowelMark,
SutraMark,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
Ekam,
SignSiddham,
Headstroke,
ContinuationSign,
SectionMarkDash1,
}
impl Into<char> for Sharada {
fn into(self) -> char {
match self {
Sharada::SignCandrabindu => '𑆀',
Sharada::SignAnusvara => '𑆁',
Sharada::SignVisarga => '𑆂',
Sharada::LetterA => '𑆃',
Sharada::LetterAa => '𑆄',
Sharada::LetterI => '𑆅',
Sharada::LetterIi => '𑆆',
Sharada::LetterU => '𑆇',
Sharada::LetterUu => '𑆈',
Sharada::LetterVocalicR => '𑆉',
Sharada::LetterVocalicRr => '𑆊',
Sharada::LetterVocalicL => '𑆋',
Sharada::LetterVocalicLl => '𑆌',
Sharada::LetterE => '𑆍',
Sharada::LetterAi => '𑆎',
Sharada::LetterO => '𑆏',
Sharada::LetterAu => '𑆐',
Sharada::LetterKa => '𑆑',
Sharada::LetterKha => '𑆒',
Sharada::LetterGa => '𑆓',
Sharada::LetterGha => '𑆔',
Sharada::LetterNga => '𑆕',
Sharada::LetterCa => '𑆖',
Sharada::LetterCha => '𑆗',
Sharada::LetterJa => '𑆘',
Sharada::LetterJha => '𑆙',
Sharada::LetterNya => '𑆚',
Sharada::LetterTta => '𑆛',
Sharada::LetterTtha => '𑆜',
Sharada::LetterDda => '𑆝',
Sharada::LetterDdha => '𑆞',
Sharada::LetterNna => '𑆟',
Sharada::LetterTa => '𑆠',
Sharada::LetterTha => '𑆡',
Sharada::LetterDa => '𑆢',
Sharada::LetterDha => '𑆣',
Sharada::LetterNa => '𑆤',
Sharada::LetterPa => '𑆥',
Sharada::LetterPha => '𑆦',
Sharada::LetterBa => '𑆧',
Sharada::LetterBha => '𑆨',
Sharada::LetterMa => '𑆩',
Sharada::LetterYa => '𑆪',
Sharada::LetterRa => '𑆫',
Sharada::LetterLa => '𑆬',
Sharada::LetterLla => '𑆭',
Sharada::LetterVa => '𑆮',
Sharada::LetterSha => '𑆯',
Sharada::LetterSsa => '𑆰',
Sharada::LetterSa => '𑆱',
Sharada::LetterHa => '𑆲',
Sharada::VowelSignAa => '𑆳',
Sharada::VowelSignI => '𑆴',
Sharada::VowelSignIi => '𑆵',
Sharada::VowelSignU => '𑆶',
Sharada::VowelSignUu => '𑆷',
Sharada::VowelSignVocalicR => '𑆸',
Sharada::VowelSignVocalicRr => '𑆹',
Sharada::VowelSignVocalicL => '𑆺',
Sharada::VowelSignVocalicLl => '𑆻',
Sharada::VowelSignE => '𑆼',
Sharada::VowelSignAi => '𑆽',
Sharada::VowelSignO => '𑆾',
Sharada::VowelSignAu => '𑆿',
Sharada::SignVirama => '𑇀',
Sharada::SignAvagraha => '𑇁',
Sharada::SignJihvamuliya => '𑇂',
Sharada::SignUpadhmaniya => '𑇃',
Sharada::Om => '𑇄',
Sharada::Danda => '𑇅',
Sharada::DoubleDanda => '𑇆',
Sharada::AbbreviationSign => '𑇇',
Sharada::Separator => '𑇈',
Sharada::SandhiMark => '𑇉',
Sharada::SignNukta => '𑇊',
Sharada::VowelModifierMark => '𑇋',
Sharada::ExtraShortVowelMark => '𑇌',
Sharada::SutraMark => '𑇍',
Sharada::DigitZero => '𑇐',
Sharada::DigitOne => '𑇑',
Sharada::DigitTwo => '𑇒',
Sharada::DigitThree => '𑇓',
Sharada::DigitFour => '𑇔',
Sharada::DigitFive => '𑇕',
Sharada::DigitSix => '𑇖',
Sharada::DigitSeven => '𑇗',
Sharada::DigitEight => '𑇘',
Sharada::DigitNine => '𑇙',
Sharada::Ekam => '𑇚',
Sharada::SignSiddham => '𑇛',
Sharada::Headstroke => '𑇜',
Sharada::ContinuationSign => '𑇝',
Sharada::SectionMarkDash1 => '𑇞',
}
}
}
impl std::convert::TryFrom<char> for Sharada {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'𑆀' => Ok(Sharada::SignCandrabindu),
'𑆁' => Ok(Sharada::SignAnusvara),
'𑆂' => Ok(Sharada::SignVisarga),
'𑆃' => Ok(Sharada::LetterA),
'𑆄' => Ok(Sharada::LetterAa),
'𑆅' => Ok(Sharada::LetterI),
'𑆆' => Ok(Sharada::LetterIi),
'𑆇' => Ok(Sharada::LetterU),
'𑆈' => Ok(Sharada::LetterUu),
'𑆉' => Ok(Sharada::LetterVocalicR),
'𑆊' => Ok(Sharada::LetterVocalicRr),
'𑆋' => Ok(Sharada::LetterVocalicL),
'𑆌' => Ok(Sharada::LetterVocalicLl),
'𑆍' => Ok(Sharada::LetterE),
'𑆎' => Ok(Sharada::LetterAi),
'𑆏' => Ok(Sharada::LetterO),
'𑆐' => Ok(Sharada::LetterAu),
'𑆑' => Ok(Sharada::LetterKa),
'𑆒' => Ok(Sharada::LetterKha),
'𑆓' => Ok(Sharada::LetterGa),
'𑆔' => Ok(Sharada::LetterGha),
'𑆕' => Ok(Sharada::LetterNga),
'𑆖' => Ok(Sharada::LetterCa),
'𑆗' => Ok(Sharada::LetterCha),
'𑆘' => Ok(Sharada::LetterJa),
'𑆙' => Ok(Sharada::LetterJha),
'𑆚' => Ok(Sharada::LetterNya),
'𑆛' => Ok(Sharada::LetterTta),
'𑆜' => Ok(Sharada::LetterTtha),
'𑆝' => Ok(Sharada::LetterDda),
'𑆞' => Ok(Sharada::LetterDdha),
'𑆟' => Ok(Sharada::LetterNna),
'𑆠' => Ok(Sharada::LetterTa),
'𑆡' => Ok(Sharada::LetterTha),
'𑆢' => Ok(Sharada::LetterDa),
'𑆣' => Ok(Sharada::LetterDha),
'𑆤' => Ok(Sharada::LetterNa),
'𑆥' => Ok(Sharada::LetterPa),
'𑆦' => Ok(Sharada::LetterPha),
'𑆧' => Ok(Sharada::LetterBa),
'𑆨' => Ok(Sharada::LetterBha),
'𑆩' => Ok(Sharada::LetterMa),
'𑆪' => Ok(Sharada::LetterYa),
'𑆫' => Ok(Sharada::LetterRa),
'𑆬' => Ok(Sharada::LetterLa),
'𑆭' => Ok(Sharada::LetterLla),
'𑆮' => Ok(Sharada::LetterVa),
'𑆯' => Ok(Sharada::LetterSha),
'𑆰' => Ok(Sharada::LetterSsa),
'𑆱' => Ok(Sharada::LetterSa),
'𑆲' => Ok(Sharada::LetterHa),
'𑆳' => Ok(Sharada::VowelSignAa),
'𑆴' => Ok(Sharada::VowelSignI),
'𑆵' => Ok(Sharada::VowelSignIi),
'𑆶' => Ok(Sharada::VowelSignU),
'𑆷' => Ok(Sharada::VowelSignUu),
'𑆸' => Ok(Sharada::VowelSignVocalicR),
'𑆹' => Ok(Sharada::VowelSignVocalicRr),
'𑆺' => Ok(Sharada::VowelSignVocalicL),
'𑆻' => Ok(Sharada::VowelSignVocalicLl),
'𑆼' => Ok(Sharada::VowelSignE),
'𑆽' => Ok(Sharada::VowelSignAi),
'𑆾' => Ok(Sharada::VowelSignO),
'𑆿' => Ok(Sharada::VowelSignAu),
'𑇀' => Ok(Sharada::SignVirama),
'𑇁' => Ok(Sharada::SignAvagraha),
'𑇂' => Ok(Sharada::SignJihvamuliya),
'𑇃' => Ok(Sharada::SignUpadhmaniya),
'𑇄' => Ok(Sharada::Om),
'𑇅' => Ok(Sharada::Danda),
'𑇆' => Ok(Sharada::DoubleDanda),
'𑇇' => Ok(Sharada::AbbreviationSign),
'𑇈' => Ok(Sharada::Separator),
'𑇉' => Ok(Sharada::SandhiMark),
'𑇊' => Ok(Sharada::SignNukta),
'𑇋' => Ok(Sharada::VowelModifierMark),
'𑇌' => Ok(Sharada::ExtraShortVowelMark),
'𑇍' => Ok(Sharada::SutraMark),
'𑇐' => Ok(Sharada::DigitZero),
'𑇑' => Ok(Sharada::DigitOne),
'𑇒' => Ok(Sharada::DigitTwo),
'𑇓' => Ok(Sharada::DigitThree),
'𑇔' => Ok(Sharada::DigitFour),
'𑇕' => Ok(Sharada::DigitFive),
'𑇖' => Ok(Sharada::DigitSix),
'𑇗' => Ok(Sharada::DigitSeven),
'𑇘' => Ok(Sharada::DigitEight),
'𑇙' => Ok(Sharada::DigitNine),
'𑇚' => Ok(Sharada::Ekam),
'𑇛' => Ok(Sharada::SignSiddham),
'𑇜' => Ok(Sharada::Headstroke),
'𑇝' => Ok(Sharada::ContinuationSign),
'𑇞' => Ok(Sharada::SectionMarkDash1),
_ => Err(()),
}
}
}
impl Into<u32> for Sharada {
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 Sharada {
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 Sharada {
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 Sharada {
pub fn new() -> Self {
Sharada::SignCandrabindu
}
pub fn name(&self) -> String {
let s = std::format!("Sharada{:#?}", self);
string_morph::to_sentence_case(&s)
}
}