mod constants {
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_EE: char = 'ꢍ';
pub const LETTER_AI: char = 'ꢎ';
pub const LETTER_O: char = 'ꢏ';
pub const LETTER_OO: 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_VA: char = 'ꢮ';
pub const LETTER_SHA: char = 'ꢯ';
pub const LETTER_SSA: char = 'ꢰ';
pub const LETTER_SA: char = 'ꢱ';
pub const LETTER_HA: char = 'ꢲ';
pub const LETTER_LLA: char = 'ꢳ';
pub const CONSONANT_SIGN_HAARU: 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_EE: char = 'ꢿ';
pub const VOWEL_SIGN_AI: char = 'ꣀ';
pub const VOWEL_SIGN_O: char = 'ꣁ';
pub const VOWEL_SIGN_OO: char = 'ꣂ';
pub const VOWEL_SIGN_AU: char = 'ꣃ';
pub const SIGN_VIRAMA: char = '꣄';
pub const SIGN_CANDRABINDU: char = 'ꣅ';
pub const DANDA: char = '꣎';
pub const DOUBLE_DANDA: 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 = '꣙';
}
#[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 {
use constants::*;
match self {
Saurashtra::SignAnusvara => SIGN_ANUSVARA,
Saurashtra::SignVisarga => SIGN_VISARGA,
Saurashtra::LetterA => LETTER_A,
Saurashtra::LetterAa => LETTER_AA,
Saurashtra::LetterI => LETTER_I,
Saurashtra::LetterIi => LETTER_II,
Saurashtra::LetterU => LETTER_U,
Saurashtra::LetterUu => LETTER_UU,
Saurashtra::LetterVocalicR => LETTER_VOCALIC_R,
Saurashtra::LetterVocalicRr => LETTER_VOCALIC_RR,
Saurashtra::LetterVocalicL => LETTER_VOCALIC_L,
Saurashtra::LetterVocalicLl => LETTER_VOCALIC_LL,
Saurashtra::LetterE => LETTER_E,
Saurashtra::LetterEe => LETTER_EE,
Saurashtra::LetterAi => LETTER_AI,
Saurashtra::LetterO => LETTER_O,
Saurashtra::LetterOo => LETTER_OO,
Saurashtra::LetterAu => LETTER_AU,
Saurashtra::LetterKa => LETTER_KA,
Saurashtra::LetterKha => LETTER_KHA,
Saurashtra::LetterGa => LETTER_GA,
Saurashtra::LetterGha => LETTER_GHA,
Saurashtra::LetterNga => LETTER_NGA,
Saurashtra::LetterCa => LETTER_CA,
Saurashtra::LetterCha => LETTER_CHA,
Saurashtra::LetterJa => LETTER_JA,
Saurashtra::LetterJha => LETTER_JHA,
Saurashtra::LetterNya => LETTER_NYA,
Saurashtra::LetterTta => LETTER_TTA,
Saurashtra::LetterTtha => LETTER_TTHA,
Saurashtra::LetterDda => LETTER_DDA,
Saurashtra::LetterDdha => LETTER_DDHA,
Saurashtra::LetterNna => LETTER_NNA,
Saurashtra::LetterTa => LETTER_TA,
Saurashtra::LetterTha => LETTER_THA,
Saurashtra::LetterDa => LETTER_DA,
Saurashtra::LetterDha => LETTER_DHA,
Saurashtra::LetterNa => LETTER_NA,
Saurashtra::LetterPa => LETTER_PA,
Saurashtra::LetterPha => LETTER_PHA,
Saurashtra::LetterBa => LETTER_BA,
Saurashtra::LetterBha => LETTER_BHA,
Saurashtra::LetterMa => LETTER_MA,
Saurashtra::LetterYa => LETTER_YA,
Saurashtra::LetterRa => LETTER_RA,
Saurashtra::LetterLa => LETTER_LA,
Saurashtra::LetterVa => LETTER_VA,
Saurashtra::LetterSha => LETTER_SHA,
Saurashtra::LetterSsa => LETTER_SSA,
Saurashtra::LetterSa => LETTER_SA,
Saurashtra::LetterHa => LETTER_HA,
Saurashtra::LetterLla => LETTER_LLA,
Saurashtra::ConsonantSignHaaru => CONSONANT_SIGN_HAARU,
Saurashtra::VowelSignAa => VOWEL_SIGN_AA,
Saurashtra::VowelSignI => VOWEL_SIGN_I,
Saurashtra::VowelSignIi => VOWEL_SIGN_II,
Saurashtra::VowelSignU => VOWEL_SIGN_U,
Saurashtra::VowelSignUu => VOWEL_SIGN_UU,
Saurashtra::VowelSignVocalicR => VOWEL_SIGN_VOCALIC_R,
Saurashtra::VowelSignVocalicRr => VOWEL_SIGN_VOCALIC_RR,
Saurashtra::VowelSignVocalicL => VOWEL_SIGN_VOCALIC_L,
Saurashtra::VowelSignVocalicLl => VOWEL_SIGN_VOCALIC_LL,
Saurashtra::VowelSignE => VOWEL_SIGN_E,
Saurashtra::VowelSignEe => VOWEL_SIGN_EE,
Saurashtra::VowelSignAi => VOWEL_SIGN_AI,
Saurashtra::VowelSignO => VOWEL_SIGN_O,
Saurashtra::VowelSignOo => VOWEL_SIGN_OO,
Saurashtra::VowelSignAu => VOWEL_SIGN_AU,
Saurashtra::SignVirama => SIGN_VIRAMA,
Saurashtra::SignCandrabindu => SIGN_CANDRABINDU,
Saurashtra::Danda => DANDA,
Saurashtra::DoubleDanda => DOUBLE_DANDA,
Saurashtra::DigitZero => DIGIT_ZERO,
Saurashtra::DigitOne => DIGIT_ONE,
Saurashtra::DigitTwo => DIGIT_TWO,
Saurashtra::DigitThree => DIGIT_THREE,
Saurashtra::DigitFour => DIGIT_FOUR,
Saurashtra::DigitFive => DIGIT_FIVE,
Saurashtra::DigitSix => DIGIT_SIX,
Saurashtra::DigitSeven => DIGIT_SEVEN,
Saurashtra::DigitEight => DIGIT_EIGHT,
Saurashtra::DigitNine => DIGIT_NINE,
}
}
}
impl std::convert::TryFrom<char> for Saurashtra {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
SIGN_ANUSVARA => Ok(Saurashtra::SignAnusvara),
SIGN_VISARGA => Ok(Saurashtra::SignVisarga),
LETTER_A => Ok(Saurashtra::LetterA),
LETTER_AA => Ok(Saurashtra::LetterAa),
LETTER_I => Ok(Saurashtra::LetterI),
LETTER_II => Ok(Saurashtra::LetterIi),
LETTER_U => Ok(Saurashtra::LetterU),
LETTER_UU => Ok(Saurashtra::LetterUu),
LETTER_VOCALIC_R => Ok(Saurashtra::LetterVocalicR),
LETTER_VOCALIC_RR => Ok(Saurashtra::LetterVocalicRr),
LETTER_VOCALIC_L => Ok(Saurashtra::LetterVocalicL),
LETTER_VOCALIC_LL => Ok(Saurashtra::LetterVocalicLl),
LETTER_E => Ok(Saurashtra::LetterE),
LETTER_EE => Ok(Saurashtra::LetterEe),
LETTER_AI => Ok(Saurashtra::LetterAi),
LETTER_O => Ok(Saurashtra::LetterO),
LETTER_OO => Ok(Saurashtra::LetterOo),
LETTER_AU => Ok(Saurashtra::LetterAu),
LETTER_KA => Ok(Saurashtra::LetterKa),
LETTER_KHA => Ok(Saurashtra::LetterKha),
LETTER_GA => Ok(Saurashtra::LetterGa),
LETTER_GHA => Ok(Saurashtra::LetterGha),
LETTER_NGA => Ok(Saurashtra::LetterNga),
LETTER_CA => Ok(Saurashtra::LetterCa),
LETTER_CHA => Ok(Saurashtra::LetterCha),
LETTER_JA => Ok(Saurashtra::LetterJa),
LETTER_JHA => Ok(Saurashtra::LetterJha),
LETTER_NYA => Ok(Saurashtra::LetterNya),
LETTER_TTA => Ok(Saurashtra::LetterTta),
LETTER_TTHA => Ok(Saurashtra::LetterTtha),
LETTER_DDA => Ok(Saurashtra::LetterDda),
LETTER_DDHA => Ok(Saurashtra::LetterDdha),
LETTER_NNA => Ok(Saurashtra::LetterNna),
LETTER_TA => Ok(Saurashtra::LetterTa),
LETTER_THA => Ok(Saurashtra::LetterTha),
LETTER_DA => Ok(Saurashtra::LetterDa),
LETTER_DHA => Ok(Saurashtra::LetterDha),
LETTER_NA => Ok(Saurashtra::LetterNa),
LETTER_PA => Ok(Saurashtra::LetterPa),
LETTER_PHA => Ok(Saurashtra::LetterPha),
LETTER_BA => Ok(Saurashtra::LetterBa),
LETTER_BHA => Ok(Saurashtra::LetterBha),
LETTER_MA => Ok(Saurashtra::LetterMa),
LETTER_YA => Ok(Saurashtra::LetterYa),
LETTER_RA => Ok(Saurashtra::LetterRa),
LETTER_LA => Ok(Saurashtra::LetterLa),
LETTER_VA => Ok(Saurashtra::LetterVa),
LETTER_SHA => Ok(Saurashtra::LetterSha),
LETTER_SSA => Ok(Saurashtra::LetterSsa),
LETTER_SA => Ok(Saurashtra::LetterSa),
LETTER_HA => Ok(Saurashtra::LetterHa),
LETTER_LLA => Ok(Saurashtra::LetterLla),
CONSONANT_SIGN_HAARU => Ok(Saurashtra::ConsonantSignHaaru),
VOWEL_SIGN_AA => Ok(Saurashtra::VowelSignAa),
VOWEL_SIGN_I => Ok(Saurashtra::VowelSignI),
VOWEL_SIGN_II => Ok(Saurashtra::VowelSignIi),
VOWEL_SIGN_U => Ok(Saurashtra::VowelSignU),
VOWEL_SIGN_UU => Ok(Saurashtra::VowelSignUu),
VOWEL_SIGN_VOCALIC_R => Ok(Saurashtra::VowelSignVocalicR),
VOWEL_SIGN_VOCALIC_RR => Ok(Saurashtra::VowelSignVocalicRr),
VOWEL_SIGN_VOCALIC_L => Ok(Saurashtra::VowelSignVocalicL),
VOWEL_SIGN_VOCALIC_LL => Ok(Saurashtra::VowelSignVocalicLl),
VOWEL_SIGN_E => Ok(Saurashtra::VowelSignE),
VOWEL_SIGN_EE => Ok(Saurashtra::VowelSignEe),
VOWEL_SIGN_AI => Ok(Saurashtra::VowelSignAi),
VOWEL_SIGN_O => Ok(Saurashtra::VowelSignO),
VOWEL_SIGN_OO => Ok(Saurashtra::VowelSignOo),
VOWEL_SIGN_AU => Ok(Saurashtra::VowelSignAu),
SIGN_VIRAMA => Ok(Saurashtra::SignVirama),
SIGN_CANDRABINDU => Ok(Saurashtra::SignCandrabindu),
DANDA => Ok(Saurashtra::Danda),
DOUBLE_DANDA => Ok(Saurashtra::DoubleDanda),
DIGIT_ZERO => Ok(Saurashtra::DigitZero),
DIGIT_ONE => Ok(Saurashtra::DigitOne),
DIGIT_TWO => Ok(Saurashtra::DigitTwo),
DIGIT_THREE => Ok(Saurashtra::DigitThree),
DIGIT_FOUR => Ok(Saurashtra::DigitFour),
DIGIT_FIVE => Ok(Saurashtra::DigitFive),
DIGIT_SIX => Ok(Saurashtra::DigitSix),
DIGIT_SEVEN => Ok(Saurashtra::DigitSeven),
DIGIT_EIGHT => Ok(Saurashtra::DigitEight),
DIGIT_NINE => 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) -> &str {
match self {
Saurashtra::SignAnusvara => "saurashtra sign anusvara",
Saurashtra::SignVisarga => "saurashtra sign visarga",
Saurashtra::LetterA => "saurashtra letter a",
Saurashtra::LetterAa => "saurashtra letter aa",
Saurashtra::LetterI => "saurashtra letter i",
Saurashtra::LetterIi => "saurashtra letter ii",
Saurashtra::LetterU => "saurashtra letter u",
Saurashtra::LetterUu => "saurashtra letter uu",
Saurashtra::LetterVocalicR => "saurashtra letter vocalic r",
Saurashtra::LetterVocalicRr => "saurashtra letter vocalic rr",
Saurashtra::LetterVocalicL => "saurashtra letter vocalic l",
Saurashtra::LetterVocalicLl => "saurashtra letter vocalic ll",
Saurashtra::LetterE => "saurashtra letter e",
Saurashtra::LetterEe => "saurashtra letter ee",
Saurashtra::LetterAi => "saurashtra letter ai",
Saurashtra::LetterO => "saurashtra letter o",
Saurashtra::LetterOo => "saurashtra letter oo",
Saurashtra::LetterAu => "saurashtra letter au",
Saurashtra::LetterKa => "saurashtra letter ka",
Saurashtra::LetterKha => "saurashtra letter kha",
Saurashtra::LetterGa => "saurashtra letter ga",
Saurashtra::LetterGha => "saurashtra letter gha",
Saurashtra::LetterNga => "saurashtra letter nga",
Saurashtra::LetterCa => "saurashtra letter ca",
Saurashtra::LetterCha => "saurashtra letter cha",
Saurashtra::LetterJa => "saurashtra letter ja",
Saurashtra::LetterJha => "saurashtra letter jha",
Saurashtra::LetterNya => "saurashtra letter nya",
Saurashtra::LetterTta => "saurashtra letter tta",
Saurashtra::LetterTtha => "saurashtra letter ttha",
Saurashtra::LetterDda => "saurashtra letter dda",
Saurashtra::LetterDdha => "saurashtra letter ddha",
Saurashtra::LetterNna => "saurashtra letter nna",
Saurashtra::LetterTa => "saurashtra letter ta",
Saurashtra::LetterTha => "saurashtra letter tha",
Saurashtra::LetterDa => "saurashtra letter da",
Saurashtra::LetterDha => "saurashtra letter dha",
Saurashtra::LetterNa => "saurashtra letter na",
Saurashtra::LetterPa => "saurashtra letter pa",
Saurashtra::LetterPha => "saurashtra letter pha",
Saurashtra::LetterBa => "saurashtra letter ba",
Saurashtra::LetterBha => "saurashtra letter bha",
Saurashtra::LetterMa => "saurashtra letter ma",
Saurashtra::LetterYa => "saurashtra letter ya",
Saurashtra::LetterRa => "saurashtra letter ra",
Saurashtra::LetterLa => "saurashtra letter la",
Saurashtra::LetterVa => "saurashtra letter va",
Saurashtra::LetterSha => "saurashtra letter sha",
Saurashtra::LetterSsa => "saurashtra letter ssa",
Saurashtra::LetterSa => "saurashtra letter sa",
Saurashtra::LetterHa => "saurashtra letter ha",
Saurashtra::LetterLla => "saurashtra letter lla",
Saurashtra::ConsonantSignHaaru => "saurashtra consonant sign haaru",
Saurashtra::VowelSignAa => "saurashtra vowel sign aa",
Saurashtra::VowelSignI => "saurashtra vowel sign i",
Saurashtra::VowelSignIi => "saurashtra vowel sign ii",
Saurashtra::VowelSignU => "saurashtra vowel sign u",
Saurashtra::VowelSignUu => "saurashtra vowel sign uu",
Saurashtra::VowelSignVocalicR => "saurashtra vowel sign vocalic r",
Saurashtra::VowelSignVocalicRr => "saurashtra vowel sign vocalic rr",
Saurashtra::VowelSignVocalicL => "saurashtra vowel sign vocalic l",
Saurashtra::VowelSignVocalicLl => "saurashtra vowel sign vocalic ll",
Saurashtra::VowelSignE => "saurashtra vowel sign e",
Saurashtra::VowelSignEe => "saurashtra vowel sign ee",
Saurashtra::VowelSignAi => "saurashtra vowel sign ai",
Saurashtra::VowelSignO => "saurashtra vowel sign o",
Saurashtra::VowelSignOo => "saurashtra vowel sign oo",
Saurashtra::VowelSignAu => "saurashtra vowel sign au",
Saurashtra::SignVirama => "saurashtra sign virama",
Saurashtra::SignCandrabindu => "saurashtra sign candrabindu",
Saurashtra::Danda => "saurashtra danda",
Saurashtra::DoubleDanda => "saurashtra double danda",
Saurashtra::DigitZero => "saurashtra digit zero",
Saurashtra::DigitOne => "saurashtra digit one",
Saurashtra::DigitTwo => "saurashtra digit two",
Saurashtra::DigitThree => "saurashtra digit three",
Saurashtra::DigitFour => "saurashtra digit four",
Saurashtra::DigitFive => "saurashtra digit five",
Saurashtra::DigitSix => "saurashtra digit six",
Saurashtra::DigitSeven => "saurashtra digit seven",
Saurashtra::DigitEight => "saurashtra digit eight",
Saurashtra::DigitNine => "saurashtra digit nine",
}
}
}