mod constants {
pub const SIGN_CANDRABINDU: char = '𑆀';
pub const SIGN_ANUSVARA: char = '𑆁';
pub const SIGN_VISARGA: char = '𑆂';
pub const LETTER_A: char = '𑆃';
pub const LETTER_AA: char = '𑆄';
pub const LETTER_I: char = '𑆅';
pub const LETTER_II: char = '𑆆';
pub const LETTER_U: char = '𑆇';
pub const LETTER_UU: char = '𑆈';
pub const LETTER_VOCALIC_R: char = '𑆉';
pub const LETTER_VOCALIC_RR: char = '𑆊';
pub const LETTER_VOCALIC_L: char = '𑆋';
pub const LETTER_VOCALIC_LL: char = '𑆌';
pub const LETTER_E: char = '𑆍';
pub const LETTER_AI: char = '𑆎';
pub const LETTER_O: char = '𑆏';
pub const LETTER_AU: char = '𑆐';
pub const LETTER_KA: char = '𑆑';
pub const LETTER_KHA: char = '𑆒';
pub const LETTER_GA: char = '𑆓';
pub const LETTER_GHA: char = '𑆔';
pub const LETTER_NGA: char = '𑆕';
pub const LETTER_CA: char = '𑆖';
pub const LETTER_CHA: char = '𑆗';
pub const LETTER_JA: char = '𑆘';
pub const LETTER_JHA: char = '𑆙';
pub const LETTER_NYA: char = '𑆚';
pub const LETTER_TTA: char = '𑆛';
pub const LETTER_TTHA: char = '𑆜';
pub const LETTER_DDA: char = '𑆝';
pub const LETTER_DDHA: char = '𑆞';
pub const LETTER_NNA: char = '𑆟';
pub const LETTER_TA: char = '𑆠';
pub const LETTER_THA: char = '𑆡';
pub const LETTER_DA: char = '𑆢';
pub const LETTER_DHA: char = '𑆣';
pub const LETTER_NA: char = '𑆤';
pub const LETTER_PA: char = '𑆥';
pub const LETTER_PHA: char = '𑆦';
pub const LETTER_BA: char = '𑆧';
pub const LETTER_BHA: char = '𑆨';
pub const LETTER_MA: char = '𑆩';
pub const LETTER_YA: char = '𑆪';
pub const LETTER_RA: char = '𑆫';
pub const LETTER_LA: char = '𑆬';
pub const LETTER_LLA: char = '𑆭';
pub const LETTER_VA: char = '𑆮';
pub const LETTER_SHA: char = '𑆯';
pub const LETTER_SSA: char = '𑆰';
pub const LETTER_SA: char = '𑆱';
pub const LETTER_HA: char = '𑆲';
pub const VOWEL_SIGN_AA: char = '𑆳';
pub const VOWEL_SIGN_I: char = '𑆴';
pub const VOWEL_SIGN_II: char = '𑆵';
pub const VOWEL_SIGN_U: char = '𑆶';
pub const VOWEL_SIGN_UU: char = '𑆷';
pub const VOWEL_SIGN_VOCALIC_R: char = '𑆸';
pub const VOWEL_SIGN_VOCALIC_RR: char = '𑆹';
pub const VOWEL_SIGN_VOCALIC_L: char = '𑆺';
pub const VOWEL_SIGN_VOCALIC_LL: char = '𑆻';
pub const VOWEL_SIGN_E: char = '𑆼';
pub const VOWEL_SIGN_AI: char = '𑆽';
pub const VOWEL_SIGN_O: char = '𑆾';
pub const VOWEL_SIGN_AU: char = '𑆿';
pub const SIGN_VIRAMA: char = '𑇀';
pub const SIGN_AVAGRAHA: char = '𑇁';
pub const SIGN_JIHVAMULIYA: char = '𑇂';
pub const SIGN_UPADHMANIYA: char = '𑇃';
pub const OM: char = '𑇄';
pub const DANDA: char = '𑇅';
pub const DOUBLE_DANDA: char = '𑇆';
pub const ABBREVIATION_SIGN: char = '𑇇';
pub const SEPARATOR: char = '𑇈';
pub const SANDHI_MARK: char = '𑇉';
pub const SIGN_NUKTA: char = '𑇊';
pub const VOWEL_MODIFIER_MARK: char = '𑇋';
pub const EXTRA_SHORT_VOWEL_MARK: char = '𑇌';
pub const SUTRA_MARK: char = '𑇍';
pub const DIGIT_ZERO: char = '𑇐';
pub const DIGIT_ONE: char = '𑇑';
pub const DIGIT_TWO: char = '𑇒';
pub const DIGIT_THREE: char = '𑇓';
pub const DIGIT_FOUR: char = '𑇔';
pub const DIGIT_FIVE: char = '𑇕';
pub const DIGIT_SIX: char = '𑇖';
pub const DIGIT_SEVEN: char = '𑇗';
pub const DIGIT_EIGHT: char = '𑇘';
pub const DIGIT_NINE: char = '𑇙';
pub const EKAM: char = '𑇚';
pub const SIGN_SIDDHAM: char = '𑇛';
pub const HEADSTROKE: char = '𑇜';
pub const CONTINUATION_SIGN: char = '𑇝';
pub const SECTION_MARK_DASH_1: char = '𑇞';
}
#[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 {
use constants::*;
match self {
Sharada::SignCandrabindu => SIGN_CANDRABINDU,
Sharada::SignAnusvara => SIGN_ANUSVARA,
Sharada::SignVisarga => SIGN_VISARGA,
Sharada::LetterA => LETTER_A,
Sharada::LetterAa => LETTER_AA,
Sharada::LetterI => LETTER_I,
Sharada::LetterIi => LETTER_II,
Sharada::LetterU => LETTER_U,
Sharada::LetterUu => LETTER_UU,
Sharada::LetterVocalicR => LETTER_VOCALIC_R,
Sharada::LetterVocalicRr => LETTER_VOCALIC_RR,
Sharada::LetterVocalicL => LETTER_VOCALIC_L,
Sharada::LetterVocalicLl => LETTER_VOCALIC_LL,
Sharada::LetterE => LETTER_E,
Sharada::LetterAi => LETTER_AI,
Sharada::LetterO => LETTER_O,
Sharada::LetterAu => LETTER_AU,
Sharada::LetterKa => LETTER_KA,
Sharada::LetterKha => LETTER_KHA,
Sharada::LetterGa => LETTER_GA,
Sharada::LetterGha => LETTER_GHA,
Sharada::LetterNga => LETTER_NGA,
Sharada::LetterCa => LETTER_CA,
Sharada::LetterCha => LETTER_CHA,
Sharada::LetterJa => LETTER_JA,
Sharada::LetterJha => LETTER_JHA,
Sharada::LetterNya => LETTER_NYA,
Sharada::LetterTta => LETTER_TTA,
Sharada::LetterTtha => LETTER_TTHA,
Sharada::LetterDda => LETTER_DDA,
Sharada::LetterDdha => LETTER_DDHA,
Sharada::LetterNna => LETTER_NNA,
Sharada::LetterTa => LETTER_TA,
Sharada::LetterTha => LETTER_THA,
Sharada::LetterDa => LETTER_DA,
Sharada::LetterDha => LETTER_DHA,
Sharada::LetterNa => LETTER_NA,
Sharada::LetterPa => LETTER_PA,
Sharada::LetterPha => LETTER_PHA,
Sharada::LetterBa => LETTER_BA,
Sharada::LetterBha => LETTER_BHA,
Sharada::LetterMa => LETTER_MA,
Sharada::LetterYa => LETTER_YA,
Sharada::LetterRa => LETTER_RA,
Sharada::LetterLa => LETTER_LA,
Sharada::LetterLla => LETTER_LLA,
Sharada::LetterVa => LETTER_VA,
Sharada::LetterSha => LETTER_SHA,
Sharada::LetterSsa => LETTER_SSA,
Sharada::LetterSa => LETTER_SA,
Sharada::LetterHa => LETTER_HA,
Sharada::VowelSignAa => VOWEL_SIGN_AA,
Sharada::VowelSignI => VOWEL_SIGN_I,
Sharada::VowelSignIi => VOWEL_SIGN_II,
Sharada::VowelSignU => VOWEL_SIGN_U,
Sharada::VowelSignUu => VOWEL_SIGN_UU,
Sharada::VowelSignVocalicR => VOWEL_SIGN_VOCALIC_R,
Sharada::VowelSignVocalicRr => VOWEL_SIGN_VOCALIC_RR,
Sharada::VowelSignVocalicL => VOWEL_SIGN_VOCALIC_L,
Sharada::VowelSignVocalicLl => VOWEL_SIGN_VOCALIC_LL,
Sharada::VowelSignE => VOWEL_SIGN_E,
Sharada::VowelSignAi => VOWEL_SIGN_AI,
Sharada::VowelSignO => VOWEL_SIGN_O,
Sharada::VowelSignAu => VOWEL_SIGN_AU,
Sharada::SignVirama => SIGN_VIRAMA,
Sharada::SignAvagraha => SIGN_AVAGRAHA,
Sharada::SignJihvamuliya => SIGN_JIHVAMULIYA,
Sharada::SignUpadhmaniya => SIGN_UPADHMANIYA,
Sharada::Om => OM,
Sharada::Danda => DANDA,
Sharada::DoubleDanda => DOUBLE_DANDA,
Sharada::AbbreviationSign => ABBREVIATION_SIGN,
Sharada::Separator => SEPARATOR,
Sharada::SandhiMark => SANDHI_MARK,
Sharada::SignNukta => SIGN_NUKTA,
Sharada::VowelModifierMark => VOWEL_MODIFIER_MARK,
Sharada::ExtraShortVowelMark => EXTRA_SHORT_VOWEL_MARK,
Sharada::SutraMark => SUTRA_MARK,
Sharada::DigitZero => DIGIT_ZERO,
Sharada::DigitOne => DIGIT_ONE,
Sharada::DigitTwo => DIGIT_TWO,
Sharada::DigitThree => DIGIT_THREE,
Sharada::DigitFour => DIGIT_FOUR,
Sharada::DigitFive => DIGIT_FIVE,
Sharada::DigitSix => DIGIT_SIX,
Sharada::DigitSeven => DIGIT_SEVEN,
Sharada::DigitEight => DIGIT_EIGHT,
Sharada::DigitNine => DIGIT_NINE,
Sharada::Ekam => EKAM,
Sharada::SignSiddham => SIGN_SIDDHAM,
Sharada::Headstroke => HEADSTROKE,
Sharada::ContinuationSign => CONTINUATION_SIGN,
Sharada::SectionMarkDash1 => SECTION_MARK_DASH_1,
}
}
}
impl std::convert::TryFrom<char> for Sharada {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
SIGN_CANDRABINDU => Ok(Sharada::SignCandrabindu),
SIGN_ANUSVARA => Ok(Sharada::SignAnusvara),
SIGN_VISARGA => Ok(Sharada::SignVisarga),
LETTER_A => Ok(Sharada::LetterA),
LETTER_AA => Ok(Sharada::LetterAa),
LETTER_I => Ok(Sharada::LetterI),
LETTER_II => Ok(Sharada::LetterIi),
LETTER_U => Ok(Sharada::LetterU),
LETTER_UU => Ok(Sharada::LetterUu),
LETTER_VOCALIC_R => Ok(Sharada::LetterVocalicR),
LETTER_VOCALIC_RR => Ok(Sharada::LetterVocalicRr),
LETTER_VOCALIC_L => Ok(Sharada::LetterVocalicL),
LETTER_VOCALIC_LL => Ok(Sharada::LetterVocalicLl),
LETTER_E => Ok(Sharada::LetterE),
LETTER_AI => Ok(Sharada::LetterAi),
LETTER_O => Ok(Sharada::LetterO),
LETTER_AU => Ok(Sharada::LetterAu),
LETTER_KA => Ok(Sharada::LetterKa),
LETTER_KHA => Ok(Sharada::LetterKha),
LETTER_GA => Ok(Sharada::LetterGa),
LETTER_GHA => Ok(Sharada::LetterGha),
LETTER_NGA => Ok(Sharada::LetterNga),
LETTER_CA => Ok(Sharada::LetterCa),
LETTER_CHA => Ok(Sharada::LetterCha),
LETTER_JA => Ok(Sharada::LetterJa),
LETTER_JHA => Ok(Sharada::LetterJha),
LETTER_NYA => Ok(Sharada::LetterNya),
LETTER_TTA => Ok(Sharada::LetterTta),
LETTER_TTHA => Ok(Sharada::LetterTtha),
LETTER_DDA => Ok(Sharada::LetterDda),
LETTER_DDHA => Ok(Sharada::LetterDdha),
LETTER_NNA => Ok(Sharada::LetterNna),
LETTER_TA => Ok(Sharada::LetterTa),
LETTER_THA => Ok(Sharada::LetterTha),
LETTER_DA => Ok(Sharada::LetterDa),
LETTER_DHA => Ok(Sharada::LetterDha),
LETTER_NA => Ok(Sharada::LetterNa),
LETTER_PA => Ok(Sharada::LetterPa),
LETTER_PHA => Ok(Sharada::LetterPha),
LETTER_BA => Ok(Sharada::LetterBa),
LETTER_BHA => Ok(Sharada::LetterBha),
LETTER_MA => Ok(Sharada::LetterMa),
LETTER_YA => Ok(Sharada::LetterYa),
LETTER_RA => Ok(Sharada::LetterRa),
LETTER_LA => Ok(Sharada::LetterLa),
LETTER_LLA => Ok(Sharada::LetterLla),
LETTER_VA => Ok(Sharada::LetterVa),
LETTER_SHA => Ok(Sharada::LetterSha),
LETTER_SSA => Ok(Sharada::LetterSsa),
LETTER_SA => Ok(Sharada::LetterSa),
LETTER_HA => Ok(Sharada::LetterHa),
VOWEL_SIGN_AA => Ok(Sharada::VowelSignAa),
VOWEL_SIGN_I => Ok(Sharada::VowelSignI),
VOWEL_SIGN_II => Ok(Sharada::VowelSignIi),
VOWEL_SIGN_U => Ok(Sharada::VowelSignU),
VOWEL_SIGN_UU => Ok(Sharada::VowelSignUu),
VOWEL_SIGN_VOCALIC_R => Ok(Sharada::VowelSignVocalicR),
VOWEL_SIGN_VOCALIC_RR => Ok(Sharada::VowelSignVocalicRr),
VOWEL_SIGN_VOCALIC_L => Ok(Sharada::VowelSignVocalicL),
VOWEL_SIGN_VOCALIC_LL => Ok(Sharada::VowelSignVocalicLl),
VOWEL_SIGN_E => Ok(Sharada::VowelSignE),
VOWEL_SIGN_AI => Ok(Sharada::VowelSignAi),
VOWEL_SIGN_O => Ok(Sharada::VowelSignO),
VOWEL_SIGN_AU => Ok(Sharada::VowelSignAu),
SIGN_VIRAMA => Ok(Sharada::SignVirama),
SIGN_AVAGRAHA => Ok(Sharada::SignAvagraha),
SIGN_JIHVAMULIYA => Ok(Sharada::SignJihvamuliya),
SIGN_UPADHMANIYA => Ok(Sharada::SignUpadhmaniya),
OM => Ok(Sharada::Om),
DANDA => Ok(Sharada::Danda),
DOUBLE_DANDA => Ok(Sharada::DoubleDanda),
ABBREVIATION_SIGN => Ok(Sharada::AbbreviationSign),
SEPARATOR => Ok(Sharada::Separator),
SANDHI_MARK => Ok(Sharada::SandhiMark),
SIGN_NUKTA => Ok(Sharada::SignNukta),
VOWEL_MODIFIER_MARK => Ok(Sharada::VowelModifierMark),
EXTRA_SHORT_VOWEL_MARK => Ok(Sharada::ExtraShortVowelMark),
SUTRA_MARK => Ok(Sharada::SutraMark),
DIGIT_ZERO => Ok(Sharada::DigitZero),
DIGIT_ONE => Ok(Sharada::DigitOne),
DIGIT_TWO => Ok(Sharada::DigitTwo),
DIGIT_THREE => Ok(Sharada::DigitThree),
DIGIT_FOUR => Ok(Sharada::DigitFour),
DIGIT_FIVE => Ok(Sharada::DigitFive),
DIGIT_SIX => Ok(Sharada::DigitSix),
DIGIT_SEVEN => Ok(Sharada::DigitSeven),
DIGIT_EIGHT => Ok(Sharada::DigitEight),
DIGIT_NINE => Ok(Sharada::DigitNine),
EKAM => Ok(Sharada::Ekam),
SIGN_SIDDHAM => Ok(Sharada::SignSiddham),
HEADSTROKE => Ok(Sharada::Headstroke),
CONTINUATION_SIGN => Ok(Sharada::ContinuationSign),
SECTION_MARK_DASH_1 => 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) -> &str {
match self {
Sharada::SignCandrabindu => "sharada sign candrabindu",
Sharada::SignAnusvara => "sharada sign anusvara",
Sharada::SignVisarga => "sharada sign visarga",
Sharada::LetterA => "sharada letter a",
Sharada::LetterAa => "sharada letter aa",
Sharada::LetterI => "sharada letter i",
Sharada::LetterIi => "sharada letter ii",
Sharada::LetterU => "sharada letter u",
Sharada::LetterUu => "sharada letter uu",
Sharada::LetterVocalicR => "sharada letter vocalic r",
Sharada::LetterVocalicRr => "sharada letter vocalic rr",
Sharada::LetterVocalicL => "sharada letter vocalic l",
Sharada::LetterVocalicLl => "sharada letter vocalic ll",
Sharada::LetterE => "sharada letter e",
Sharada::LetterAi => "sharada letter ai",
Sharada::LetterO => "sharada letter o",
Sharada::LetterAu => "sharada letter au",
Sharada::LetterKa => "sharada letter ka",
Sharada::LetterKha => "sharada letter kha",
Sharada::LetterGa => "sharada letter ga",
Sharada::LetterGha => "sharada letter gha",
Sharada::LetterNga => "sharada letter nga",
Sharada::LetterCa => "sharada letter ca",
Sharada::LetterCha => "sharada letter cha",
Sharada::LetterJa => "sharada letter ja",
Sharada::LetterJha => "sharada letter jha",
Sharada::LetterNya => "sharada letter nya",
Sharada::LetterTta => "sharada letter tta",
Sharada::LetterTtha => "sharada letter ttha",
Sharada::LetterDda => "sharada letter dda",
Sharada::LetterDdha => "sharada letter ddha",
Sharada::LetterNna => "sharada letter nna",
Sharada::LetterTa => "sharada letter ta",
Sharada::LetterTha => "sharada letter tha",
Sharada::LetterDa => "sharada letter da",
Sharada::LetterDha => "sharada letter dha",
Sharada::LetterNa => "sharada letter na",
Sharada::LetterPa => "sharada letter pa",
Sharada::LetterPha => "sharada letter pha",
Sharada::LetterBa => "sharada letter ba",
Sharada::LetterBha => "sharada letter bha",
Sharada::LetterMa => "sharada letter ma",
Sharada::LetterYa => "sharada letter ya",
Sharada::LetterRa => "sharada letter ra",
Sharada::LetterLa => "sharada letter la",
Sharada::LetterLla => "sharada letter lla",
Sharada::LetterVa => "sharada letter va",
Sharada::LetterSha => "sharada letter sha",
Sharada::LetterSsa => "sharada letter ssa",
Sharada::LetterSa => "sharada letter sa",
Sharada::LetterHa => "sharada letter ha",
Sharada::VowelSignAa => "sharada vowel sign aa",
Sharada::VowelSignI => "sharada vowel sign i",
Sharada::VowelSignIi => "sharada vowel sign ii",
Sharada::VowelSignU => "sharada vowel sign u",
Sharada::VowelSignUu => "sharada vowel sign uu",
Sharada::VowelSignVocalicR => "sharada vowel sign vocalic r",
Sharada::VowelSignVocalicRr => "sharada vowel sign vocalic rr",
Sharada::VowelSignVocalicL => "sharada vowel sign vocalic l",
Sharada::VowelSignVocalicLl => "sharada vowel sign vocalic ll",
Sharada::VowelSignE => "sharada vowel sign e",
Sharada::VowelSignAi => "sharada vowel sign ai",
Sharada::VowelSignO => "sharada vowel sign o",
Sharada::VowelSignAu => "sharada vowel sign au",
Sharada::SignVirama => "sharada sign virama",
Sharada::SignAvagraha => "sharada sign avagraha",
Sharada::SignJihvamuliya => "sharada sign jihvamuliya",
Sharada::SignUpadhmaniya => "sharada sign upadhmaniya",
Sharada::Om => "sharada om",
Sharada::Danda => "sharada danda",
Sharada::DoubleDanda => "sharada double danda",
Sharada::AbbreviationSign => "sharada abbreviation sign",
Sharada::Separator => "sharada separator",
Sharada::SandhiMark => "sharada sandhi mark",
Sharada::SignNukta => "sharada sign nukta",
Sharada::VowelModifierMark => "sharada vowel modifier mark",
Sharada::ExtraShortVowelMark => "sharada extra short vowel mark",
Sharada::SutraMark => "sharada sutra mark",
Sharada::DigitZero => "sharada digit zero",
Sharada::DigitOne => "sharada digit one",
Sharada::DigitTwo => "sharada digit two",
Sharada::DigitThree => "sharada digit three",
Sharada::DigitFour => "sharada digit four",
Sharada::DigitFive => "sharada digit five",
Sharada::DigitSix => "sharada digit six",
Sharada::DigitSeven => "sharada digit seven",
Sharada::DigitEight => "sharada digit eight",
Sharada::DigitNine => "sharada digit nine",
Sharada::Ekam => "sharada ekam",
Sharada::SignSiddham => "sharada sign siddham",
Sharada::Headstroke => "sharada headstroke",
Sharada::ContinuationSign => "sharada continuation sign",
Sharada::SectionMarkDash1 => "sharada section mark-1",
}
}
}