#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Siddham {
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,
VowelSignE,
VowelSignAi,
VowelSignO,
VowelSignAu,
SignCandrabindu,
SignAnusvara,
SignVisarga,
SignVirama,
SignNukta,
Sign,
Danda,
DoubleDanda,
SeparatorDot,
SeparatorBar,
RepetitionMarkDash1,
RepetitionMarkDash2,
RepetitionMarkDash3,
EndOfTextMark,
SectionMarkWithTridentAndUDashShapedOrnaments,
SectionMarkWithTridentAndDottedCrescents,
SectionMarkWithRaysAndDottedCrescents,
SectionMarkWithRaysAndDottedDoubleCrescents,
SectionMarkWithRaysAndDottedTripleCrescents,
SectionMarkDoubleRing,
SectionMarkDoubleRingWithRays,
SectionMarkWithDoubleCrescents,
SectionMarkWithTripleCrescents,
SectionMarkWithQuadrupleCrescents,
SectionMarkWithSeptupleCrescents,
SectionMarkWithCirclesAndRays,
SectionMarkWithCirclesAndTwoEnclosures,
SectionMarkWithCirclesAndFourEnclosures,
LetterThreeDashCircleAlternateI,
LetterTwoDashCircleAlternateI,
LetterTwoDashCircleAlternateIi,
LetterAlternateU,
VowelSignAlternateU,
VowelSignAlternateUu,
}
impl Into<char> for Siddham {
fn into(self) -> char {
match self {
Siddham::LetterA => '𑖀',
Siddham::LetterAa => '𑖁',
Siddham::LetterI => '𑖂',
Siddham::LetterIi => '𑖃',
Siddham::LetterU => '𑖄',
Siddham::LetterUu => '𑖅',
Siddham::LetterVocalicR => '𑖆',
Siddham::LetterVocalicRr => '𑖇',
Siddham::LetterVocalicL => '𑖈',
Siddham::LetterVocalicLl => '𑖉',
Siddham::LetterE => '𑖊',
Siddham::LetterAi => '𑖋',
Siddham::LetterO => '𑖌',
Siddham::LetterAu => '𑖍',
Siddham::LetterKa => '𑖎',
Siddham::LetterKha => '𑖏',
Siddham::LetterGa => '𑖐',
Siddham::LetterGha => '𑖑',
Siddham::LetterNga => '𑖒',
Siddham::LetterCa => '𑖓',
Siddham::LetterCha => '𑖔',
Siddham::LetterJa => '𑖕',
Siddham::LetterJha => '𑖖',
Siddham::LetterNya => '𑖗',
Siddham::LetterTta => '𑖘',
Siddham::LetterTtha => '𑖙',
Siddham::LetterDda => '𑖚',
Siddham::LetterDdha => '𑖛',
Siddham::LetterNna => '𑖜',
Siddham::LetterTa => '𑖝',
Siddham::LetterTha => '𑖞',
Siddham::LetterDa => '𑖟',
Siddham::LetterDha => '𑖠',
Siddham::LetterNa => '𑖡',
Siddham::LetterPa => '𑖢',
Siddham::LetterPha => '𑖣',
Siddham::LetterBa => '𑖤',
Siddham::LetterBha => '𑖥',
Siddham::LetterMa => '𑖦',
Siddham::LetterYa => '𑖧',
Siddham::LetterRa => '𑖨',
Siddham::LetterLa => '𑖩',
Siddham::LetterVa => '𑖪',
Siddham::LetterSha => '𑖫',
Siddham::LetterSsa => '𑖬',
Siddham::LetterSa => '𑖭',
Siddham::LetterHa => '𑖮',
Siddham::VowelSignAa => '𑖯',
Siddham::VowelSignI => '𑖰',
Siddham::VowelSignIi => '𑖱',
Siddham::VowelSignU => '𑖲',
Siddham::VowelSignUu => '𑖳',
Siddham::VowelSignVocalicR => '𑖴',
Siddham::VowelSignVocalicRr => '𑖵',
Siddham::VowelSignE => '𑖸',
Siddham::VowelSignAi => '𑖹',
Siddham::VowelSignO => '𑖺',
Siddham::VowelSignAu => '𑖻',
Siddham::SignCandrabindu => '𑖼',
Siddham::SignAnusvara => '𑖽',
Siddham::SignVisarga => '𑖾',
Siddham::SignVirama => '𑖿',
Siddham::SignNukta => '𑗀',
Siddham::Sign => '𑗁',
Siddham::Danda => '𑗂',
Siddham::DoubleDanda => '𑗃',
Siddham::SeparatorDot => '𑗄',
Siddham::SeparatorBar => '𑗅',
Siddham::RepetitionMarkDash1 => '𑗆',
Siddham::RepetitionMarkDash2 => '𑗇',
Siddham::RepetitionMarkDash3 => '𑗈',
Siddham::EndOfTextMark => '𑗉',
Siddham::SectionMarkWithTridentAndUDashShapedOrnaments => '𑗊',
Siddham::SectionMarkWithTridentAndDottedCrescents => '𑗋',
Siddham::SectionMarkWithRaysAndDottedCrescents => '𑗌',
Siddham::SectionMarkWithRaysAndDottedDoubleCrescents => '𑗍',
Siddham::SectionMarkWithRaysAndDottedTripleCrescents => '𑗎',
Siddham::SectionMarkDoubleRing => '𑗏',
Siddham::SectionMarkDoubleRingWithRays => '𑗐',
Siddham::SectionMarkWithDoubleCrescents => '𑗑',
Siddham::SectionMarkWithTripleCrescents => '𑗒',
Siddham::SectionMarkWithQuadrupleCrescents => '𑗓',
Siddham::SectionMarkWithSeptupleCrescents => '𑗔',
Siddham::SectionMarkWithCirclesAndRays => '𑗕',
Siddham::SectionMarkWithCirclesAndTwoEnclosures => '𑗖',
Siddham::SectionMarkWithCirclesAndFourEnclosures => '𑗗',
Siddham::LetterThreeDashCircleAlternateI => '𑗘',
Siddham::LetterTwoDashCircleAlternateI => '𑗙',
Siddham::LetterTwoDashCircleAlternateIi => '𑗚',
Siddham::LetterAlternateU => '𑗛',
Siddham::VowelSignAlternateU => '𑗜',
Siddham::VowelSignAlternateUu => '𑗝',
}
}
}
impl std::convert::TryFrom<char> for Siddham {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'𑖀' => Ok(Siddham::LetterA),
'𑖁' => Ok(Siddham::LetterAa),
'𑖂' => Ok(Siddham::LetterI),
'𑖃' => Ok(Siddham::LetterIi),
'𑖄' => Ok(Siddham::LetterU),
'𑖅' => Ok(Siddham::LetterUu),
'𑖆' => Ok(Siddham::LetterVocalicR),
'𑖇' => Ok(Siddham::LetterVocalicRr),
'𑖈' => Ok(Siddham::LetterVocalicL),
'𑖉' => Ok(Siddham::LetterVocalicLl),
'𑖊' => Ok(Siddham::LetterE),
'𑖋' => Ok(Siddham::LetterAi),
'𑖌' => Ok(Siddham::LetterO),
'𑖍' => Ok(Siddham::LetterAu),
'𑖎' => Ok(Siddham::LetterKa),
'𑖏' => Ok(Siddham::LetterKha),
'𑖐' => Ok(Siddham::LetterGa),
'𑖑' => Ok(Siddham::LetterGha),
'𑖒' => Ok(Siddham::LetterNga),
'𑖓' => Ok(Siddham::LetterCa),
'𑖔' => Ok(Siddham::LetterCha),
'𑖕' => Ok(Siddham::LetterJa),
'𑖖' => Ok(Siddham::LetterJha),
'𑖗' => Ok(Siddham::LetterNya),
'𑖘' => Ok(Siddham::LetterTta),
'𑖙' => Ok(Siddham::LetterTtha),
'𑖚' => Ok(Siddham::LetterDda),
'𑖛' => Ok(Siddham::LetterDdha),
'𑖜' => Ok(Siddham::LetterNna),
'𑖝' => Ok(Siddham::LetterTa),
'𑖞' => Ok(Siddham::LetterTha),
'𑖟' => Ok(Siddham::LetterDa),
'𑖠' => Ok(Siddham::LetterDha),
'𑖡' => Ok(Siddham::LetterNa),
'𑖢' => Ok(Siddham::LetterPa),
'𑖣' => Ok(Siddham::LetterPha),
'𑖤' => Ok(Siddham::LetterBa),
'𑖥' => Ok(Siddham::LetterBha),
'𑖦' => Ok(Siddham::LetterMa),
'𑖧' => Ok(Siddham::LetterYa),
'𑖨' => Ok(Siddham::LetterRa),
'𑖩' => Ok(Siddham::LetterLa),
'𑖪' => Ok(Siddham::LetterVa),
'𑖫' => Ok(Siddham::LetterSha),
'𑖬' => Ok(Siddham::LetterSsa),
'𑖭' => Ok(Siddham::LetterSa),
'𑖮' => Ok(Siddham::LetterHa),
'𑖯' => Ok(Siddham::VowelSignAa),
'𑖰' => Ok(Siddham::VowelSignI),
'𑖱' => Ok(Siddham::VowelSignIi),
'𑖲' => Ok(Siddham::VowelSignU),
'𑖳' => Ok(Siddham::VowelSignUu),
'𑖴' => Ok(Siddham::VowelSignVocalicR),
'𑖵' => Ok(Siddham::VowelSignVocalicRr),
'𑖸' => Ok(Siddham::VowelSignE),
'𑖹' => Ok(Siddham::VowelSignAi),
'𑖺' => Ok(Siddham::VowelSignO),
'𑖻' => Ok(Siddham::VowelSignAu),
'𑖼' => Ok(Siddham::SignCandrabindu),
'𑖽' => Ok(Siddham::SignAnusvara),
'𑖾' => Ok(Siddham::SignVisarga),
'𑖿' => Ok(Siddham::SignVirama),
'𑗀' => Ok(Siddham::SignNukta),
'𑗁' => Ok(Siddham::Sign),
'𑗂' => Ok(Siddham::Danda),
'𑗃' => Ok(Siddham::DoubleDanda),
'𑗄' => Ok(Siddham::SeparatorDot),
'𑗅' => Ok(Siddham::SeparatorBar),
'𑗆' => Ok(Siddham::RepetitionMarkDash1),
'𑗇' => Ok(Siddham::RepetitionMarkDash2),
'𑗈' => Ok(Siddham::RepetitionMarkDash3),
'𑗉' => Ok(Siddham::EndOfTextMark),
'𑗊' => Ok(Siddham::SectionMarkWithTridentAndUDashShapedOrnaments),
'𑗋' => Ok(Siddham::SectionMarkWithTridentAndDottedCrescents),
'𑗌' => Ok(Siddham::SectionMarkWithRaysAndDottedCrescents),
'𑗍' => Ok(Siddham::SectionMarkWithRaysAndDottedDoubleCrescents),
'𑗎' => Ok(Siddham::SectionMarkWithRaysAndDottedTripleCrescents),
'𑗏' => Ok(Siddham::SectionMarkDoubleRing),
'𑗐' => Ok(Siddham::SectionMarkDoubleRingWithRays),
'𑗑' => Ok(Siddham::SectionMarkWithDoubleCrescents),
'𑗒' => Ok(Siddham::SectionMarkWithTripleCrescents),
'𑗓' => Ok(Siddham::SectionMarkWithQuadrupleCrescents),
'𑗔' => Ok(Siddham::SectionMarkWithSeptupleCrescents),
'𑗕' => Ok(Siddham::SectionMarkWithCirclesAndRays),
'𑗖' => Ok(Siddham::SectionMarkWithCirclesAndTwoEnclosures),
'𑗗' => Ok(Siddham::SectionMarkWithCirclesAndFourEnclosures),
'𑗘' => Ok(Siddham::LetterThreeDashCircleAlternateI),
'𑗙' => Ok(Siddham::LetterTwoDashCircleAlternateI),
'𑗚' => Ok(Siddham::LetterTwoDashCircleAlternateIi),
'𑗛' => Ok(Siddham::LetterAlternateU),
'𑗜' => Ok(Siddham::VowelSignAlternateU),
'𑗝' => Ok(Siddham::VowelSignAlternateUu),
_ => Err(()),
}
}
}
impl Into<u32> for Siddham {
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 Siddham {
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 Siddham {
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 Siddham {
pub fn new() -> Self {
Siddham::LetterA
}
pub fn name(&self) -> String {
let s = std::format!("Siddham{:#?}", self);
string_morph::to_sentence_case(&s)
}
}