mod constants {
pub const SIGN_SPACING_CANDRABINDU: char = 'ಀ';
pub const SIGN_CANDRABINDU: char = 'ಁ';
pub const SIGN_ANUSVARA: char = 'ಂ';
pub const SIGN_VISARGA: char = 'ಃ';
pub const SIGN_SIDDHAM: 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_L: 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_RRA: 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 SIGN_NUKTA: char = '಼';
pub const SIGN_AVAGRAHA: 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_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 LENGTH_MARK: char = 'ೕ';
pub const AI_LENGTH_MARK: char = 'ೖ';
pub const LETTER_FA: char = 'ೞ';
pub const LETTER_VOCALIC_RR: char = 'ೠ';
pub const LETTER_VOCALIC_LL: char = 'ೡ';
pub const VOWEL_SIGN_VOCALIC_L: char = 'ೢ';
pub const VOWEL_SIGN_VOCALIC_LL: 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 SIGN_JIHVAMULIYA: char = 'ೱ';
pub const SIGN_UPADHMANIYA: char = 'ೲ';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Kannada {
SignSpacingCandrabindu,
SignCandrabindu,
SignAnusvara,
SignVisarga,
SignSiddham,
LetterA,
LetterAa,
LetterI,
LetterIi,
LetterU,
LetterUu,
LetterVocalicR,
LetterVocalicL,
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,
LetterRra,
LetterLa,
LetterLla,
LetterVa,
LetterSha,
LetterSsa,
LetterSa,
LetterHa,
SignNukta,
SignAvagraha,
VowelSignAa,
VowelSignI,
VowelSignIi,
VowelSignU,
VowelSignUu,
VowelSignVocalicR,
VowelSignVocalicRr,
VowelSignE,
VowelSignEe,
VowelSignAi,
VowelSignO,
VowelSignOo,
VowelSignAu,
SignVirama,
LengthMark,
AiLengthMark,
LetterFa,
LetterVocalicRr,
LetterVocalicLl,
VowelSignVocalicL,
VowelSignVocalicLl,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
SignJihvamuliya,
SignUpadhmaniya,
}
impl Into<char> for Kannada {
fn into(self) -> char {
use constants::*;
match self {
Kannada::SignSpacingCandrabindu => SIGN_SPACING_CANDRABINDU,
Kannada::SignCandrabindu => SIGN_CANDRABINDU,
Kannada::SignAnusvara => SIGN_ANUSVARA,
Kannada::SignVisarga => SIGN_VISARGA,
Kannada::SignSiddham => SIGN_SIDDHAM,
Kannada::LetterA => LETTER_A,
Kannada::LetterAa => LETTER_AA,
Kannada::LetterI => LETTER_I,
Kannada::LetterIi => LETTER_II,
Kannada::LetterU => LETTER_U,
Kannada::LetterUu => LETTER_UU,
Kannada::LetterVocalicR => LETTER_VOCALIC_R,
Kannada::LetterVocalicL => LETTER_VOCALIC_L,
Kannada::LetterE => LETTER_E,
Kannada::LetterEe => LETTER_EE,
Kannada::LetterAi => LETTER_AI,
Kannada::LetterO => LETTER_O,
Kannada::LetterOo => LETTER_OO,
Kannada::LetterAu => LETTER_AU,
Kannada::LetterKa => LETTER_KA,
Kannada::LetterKha => LETTER_KHA,
Kannada::LetterGa => LETTER_GA,
Kannada::LetterGha => LETTER_GHA,
Kannada::LetterNga => LETTER_NGA,
Kannada::LetterCa => LETTER_CA,
Kannada::LetterCha => LETTER_CHA,
Kannada::LetterJa => LETTER_JA,
Kannada::LetterJha => LETTER_JHA,
Kannada::LetterNya => LETTER_NYA,
Kannada::LetterTta => LETTER_TTA,
Kannada::LetterTtha => LETTER_TTHA,
Kannada::LetterDda => LETTER_DDA,
Kannada::LetterDdha => LETTER_DDHA,
Kannada::LetterNna => LETTER_NNA,
Kannada::LetterTa => LETTER_TA,
Kannada::LetterTha => LETTER_THA,
Kannada::LetterDa => LETTER_DA,
Kannada::LetterDha => LETTER_DHA,
Kannada::LetterNa => LETTER_NA,
Kannada::LetterPa => LETTER_PA,
Kannada::LetterPha => LETTER_PHA,
Kannada::LetterBa => LETTER_BA,
Kannada::LetterBha => LETTER_BHA,
Kannada::LetterMa => LETTER_MA,
Kannada::LetterYa => LETTER_YA,
Kannada::LetterRa => LETTER_RA,
Kannada::LetterRra => LETTER_RRA,
Kannada::LetterLa => LETTER_LA,
Kannada::LetterLla => LETTER_LLA,
Kannada::LetterVa => LETTER_VA,
Kannada::LetterSha => LETTER_SHA,
Kannada::LetterSsa => LETTER_SSA,
Kannada::LetterSa => LETTER_SA,
Kannada::LetterHa => LETTER_HA,
Kannada::SignNukta => SIGN_NUKTA,
Kannada::SignAvagraha => SIGN_AVAGRAHA,
Kannada::VowelSignAa => VOWEL_SIGN_AA,
Kannada::VowelSignI => VOWEL_SIGN_I,
Kannada::VowelSignIi => VOWEL_SIGN_II,
Kannada::VowelSignU => VOWEL_SIGN_U,
Kannada::VowelSignUu => VOWEL_SIGN_UU,
Kannada::VowelSignVocalicR => VOWEL_SIGN_VOCALIC_R,
Kannada::VowelSignVocalicRr => VOWEL_SIGN_VOCALIC_RR,
Kannada::VowelSignE => VOWEL_SIGN_E,
Kannada::VowelSignEe => VOWEL_SIGN_EE,
Kannada::VowelSignAi => VOWEL_SIGN_AI,
Kannada::VowelSignO => VOWEL_SIGN_O,
Kannada::VowelSignOo => VOWEL_SIGN_OO,
Kannada::VowelSignAu => VOWEL_SIGN_AU,
Kannada::SignVirama => SIGN_VIRAMA,
Kannada::LengthMark => LENGTH_MARK,
Kannada::AiLengthMark => AI_LENGTH_MARK,
Kannada::LetterFa => LETTER_FA,
Kannada::LetterVocalicRr => LETTER_VOCALIC_RR,
Kannada::LetterVocalicLl => LETTER_VOCALIC_LL,
Kannada::VowelSignVocalicL => VOWEL_SIGN_VOCALIC_L,
Kannada::VowelSignVocalicLl => VOWEL_SIGN_VOCALIC_LL,
Kannada::DigitZero => DIGIT_ZERO,
Kannada::DigitOne => DIGIT_ONE,
Kannada::DigitTwo => DIGIT_TWO,
Kannada::DigitThree => DIGIT_THREE,
Kannada::DigitFour => DIGIT_FOUR,
Kannada::DigitFive => DIGIT_FIVE,
Kannada::DigitSix => DIGIT_SIX,
Kannada::DigitSeven => DIGIT_SEVEN,
Kannada::DigitEight => DIGIT_EIGHT,
Kannada::DigitNine => DIGIT_NINE,
Kannada::SignJihvamuliya => SIGN_JIHVAMULIYA,
Kannada::SignUpadhmaniya => SIGN_UPADHMANIYA,
}
}
}
impl std::convert::TryFrom<char> for Kannada {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
SIGN_SPACING_CANDRABINDU => Ok(Kannada::SignSpacingCandrabindu),
SIGN_CANDRABINDU => Ok(Kannada::SignCandrabindu),
SIGN_ANUSVARA => Ok(Kannada::SignAnusvara),
SIGN_VISARGA => Ok(Kannada::SignVisarga),
SIGN_SIDDHAM => Ok(Kannada::SignSiddham),
LETTER_A => Ok(Kannada::LetterA),
LETTER_AA => Ok(Kannada::LetterAa),
LETTER_I => Ok(Kannada::LetterI),
LETTER_II => Ok(Kannada::LetterIi),
LETTER_U => Ok(Kannada::LetterU),
LETTER_UU => Ok(Kannada::LetterUu),
LETTER_VOCALIC_R => Ok(Kannada::LetterVocalicR),
LETTER_VOCALIC_L => Ok(Kannada::LetterVocalicL),
LETTER_E => Ok(Kannada::LetterE),
LETTER_EE => Ok(Kannada::LetterEe),
LETTER_AI => Ok(Kannada::LetterAi),
LETTER_O => Ok(Kannada::LetterO),
LETTER_OO => Ok(Kannada::LetterOo),
LETTER_AU => Ok(Kannada::LetterAu),
LETTER_KA => Ok(Kannada::LetterKa),
LETTER_KHA => Ok(Kannada::LetterKha),
LETTER_GA => Ok(Kannada::LetterGa),
LETTER_GHA => Ok(Kannada::LetterGha),
LETTER_NGA => Ok(Kannada::LetterNga),
LETTER_CA => Ok(Kannada::LetterCa),
LETTER_CHA => Ok(Kannada::LetterCha),
LETTER_JA => Ok(Kannada::LetterJa),
LETTER_JHA => Ok(Kannada::LetterJha),
LETTER_NYA => Ok(Kannada::LetterNya),
LETTER_TTA => Ok(Kannada::LetterTta),
LETTER_TTHA => Ok(Kannada::LetterTtha),
LETTER_DDA => Ok(Kannada::LetterDda),
LETTER_DDHA => Ok(Kannada::LetterDdha),
LETTER_NNA => Ok(Kannada::LetterNna),
LETTER_TA => Ok(Kannada::LetterTa),
LETTER_THA => Ok(Kannada::LetterTha),
LETTER_DA => Ok(Kannada::LetterDa),
LETTER_DHA => Ok(Kannada::LetterDha),
LETTER_NA => Ok(Kannada::LetterNa),
LETTER_PA => Ok(Kannada::LetterPa),
LETTER_PHA => Ok(Kannada::LetterPha),
LETTER_BA => Ok(Kannada::LetterBa),
LETTER_BHA => Ok(Kannada::LetterBha),
LETTER_MA => Ok(Kannada::LetterMa),
LETTER_YA => Ok(Kannada::LetterYa),
LETTER_RA => Ok(Kannada::LetterRa),
LETTER_RRA => Ok(Kannada::LetterRra),
LETTER_LA => Ok(Kannada::LetterLa),
LETTER_LLA => Ok(Kannada::LetterLla),
LETTER_VA => Ok(Kannada::LetterVa),
LETTER_SHA => Ok(Kannada::LetterSha),
LETTER_SSA => Ok(Kannada::LetterSsa),
LETTER_SA => Ok(Kannada::LetterSa),
LETTER_HA => Ok(Kannada::LetterHa),
SIGN_NUKTA => Ok(Kannada::SignNukta),
SIGN_AVAGRAHA => Ok(Kannada::SignAvagraha),
VOWEL_SIGN_AA => Ok(Kannada::VowelSignAa),
VOWEL_SIGN_I => Ok(Kannada::VowelSignI),
VOWEL_SIGN_II => Ok(Kannada::VowelSignIi),
VOWEL_SIGN_U => Ok(Kannada::VowelSignU),
VOWEL_SIGN_UU => Ok(Kannada::VowelSignUu),
VOWEL_SIGN_VOCALIC_R => Ok(Kannada::VowelSignVocalicR),
VOWEL_SIGN_VOCALIC_RR => Ok(Kannada::VowelSignVocalicRr),
VOWEL_SIGN_E => Ok(Kannada::VowelSignE),
VOWEL_SIGN_EE => Ok(Kannada::VowelSignEe),
VOWEL_SIGN_AI => Ok(Kannada::VowelSignAi),
VOWEL_SIGN_O => Ok(Kannada::VowelSignO),
VOWEL_SIGN_OO => Ok(Kannada::VowelSignOo),
VOWEL_SIGN_AU => Ok(Kannada::VowelSignAu),
SIGN_VIRAMA => Ok(Kannada::SignVirama),
LENGTH_MARK => Ok(Kannada::LengthMark),
AI_LENGTH_MARK => Ok(Kannada::AiLengthMark),
LETTER_FA => Ok(Kannada::LetterFa),
LETTER_VOCALIC_RR => Ok(Kannada::LetterVocalicRr),
LETTER_VOCALIC_LL => Ok(Kannada::LetterVocalicLl),
VOWEL_SIGN_VOCALIC_L => Ok(Kannada::VowelSignVocalicL),
VOWEL_SIGN_VOCALIC_LL => Ok(Kannada::VowelSignVocalicLl),
DIGIT_ZERO => Ok(Kannada::DigitZero),
DIGIT_ONE => Ok(Kannada::DigitOne),
DIGIT_TWO => Ok(Kannada::DigitTwo),
DIGIT_THREE => Ok(Kannada::DigitThree),
DIGIT_FOUR => Ok(Kannada::DigitFour),
DIGIT_FIVE => Ok(Kannada::DigitFive),
DIGIT_SIX => Ok(Kannada::DigitSix),
DIGIT_SEVEN => Ok(Kannada::DigitSeven),
DIGIT_EIGHT => Ok(Kannada::DigitEight),
DIGIT_NINE => Ok(Kannada::DigitNine),
SIGN_JIHVAMULIYA => Ok(Kannada::SignJihvamuliya),
SIGN_UPADHMANIYA => Ok(Kannada::SignUpadhmaniya),
_ => Err(()),
}
}
}
impl Into<u32> for Kannada {
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 Kannada {
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 Kannada {
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 Kannada {
pub fn new() -> Self {
Kannada::SignSpacingCandrabindu
}
pub fn name(&self) -> &str {
match self {
Kannada::SignSpacingCandrabindu => "kannada sign spacing candrabindu",
Kannada::SignCandrabindu => "kannada sign candrabindu",
Kannada::SignAnusvara => "kannada sign anusvara",
Kannada::SignVisarga => "kannada sign visarga",
Kannada::SignSiddham => "kannada sign siddham",
Kannada::LetterA => "kannada letter a",
Kannada::LetterAa => "kannada letter aa",
Kannada::LetterI => "kannada letter i",
Kannada::LetterIi => "kannada letter ii",
Kannada::LetterU => "kannada letter u",
Kannada::LetterUu => "kannada letter uu",
Kannada::LetterVocalicR => "kannada letter vocalic r",
Kannada::LetterVocalicL => "kannada letter vocalic l",
Kannada::LetterE => "kannada letter e",
Kannada::LetterEe => "kannada letter ee",
Kannada::LetterAi => "kannada letter ai",
Kannada::LetterO => "kannada letter o",
Kannada::LetterOo => "kannada letter oo",
Kannada::LetterAu => "kannada letter au",
Kannada::LetterKa => "kannada letter ka",
Kannada::LetterKha => "kannada letter kha",
Kannada::LetterGa => "kannada letter ga",
Kannada::LetterGha => "kannada letter gha",
Kannada::LetterNga => "kannada letter nga",
Kannada::LetterCa => "kannada letter ca",
Kannada::LetterCha => "kannada letter cha",
Kannada::LetterJa => "kannada letter ja",
Kannada::LetterJha => "kannada letter jha",
Kannada::LetterNya => "kannada letter nya",
Kannada::LetterTta => "kannada letter tta",
Kannada::LetterTtha => "kannada letter ttha",
Kannada::LetterDda => "kannada letter dda",
Kannada::LetterDdha => "kannada letter ddha",
Kannada::LetterNna => "kannada letter nna",
Kannada::LetterTa => "kannada letter ta",
Kannada::LetterTha => "kannada letter tha",
Kannada::LetterDa => "kannada letter da",
Kannada::LetterDha => "kannada letter dha",
Kannada::LetterNa => "kannada letter na",
Kannada::LetterPa => "kannada letter pa",
Kannada::LetterPha => "kannada letter pha",
Kannada::LetterBa => "kannada letter ba",
Kannada::LetterBha => "kannada letter bha",
Kannada::LetterMa => "kannada letter ma",
Kannada::LetterYa => "kannada letter ya",
Kannada::LetterRa => "kannada letter ra",
Kannada::LetterRra => "kannada letter rra",
Kannada::LetterLa => "kannada letter la",
Kannada::LetterLla => "kannada letter lla",
Kannada::LetterVa => "kannada letter va",
Kannada::LetterSha => "kannada letter sha",
Kannada::LetterSsa => "kannada letter ssa",
Kannada::LetterSa => "kannada letter sa",
Kannada::LetterHa => "kannada letter ha",
Kannada::SignNukta => "kannada sign nukta",
Kannada::SignAvagraha => "kannada sign avagraha",
Kannada::VowelSignAa => "kannada vowel sign aa",
Kannada::VowelSignI => "kannada vowel sign i",
Kannada::VowelSignIi => "kannada vowel sign ii",
Kannada::VowelSignU => "kannada vowel sign u",
Kannada::VowelSignUu => "kannada vowel sign uu",
Kannada::VowelSignVocalicR => "kannada vowel sign vocalic r",
Kannada::VowelSignVocalicRr => "kannada vowel sign vocalic rr",
Kannada::VowelSignE => "kannada vowel sign e",
Kannada::VowelSignEe => "kannada vowel sign ee",
Kannada::VowelSignAi => "kannada vowel sign ai",
Kannada::VowelSignO => "kannada vowel sign o",
Kannada::VowelSignOo => "kannada vowel sign oo",
Kannada::VowelSignAu => "kannada vowel sign au",
Kannada::SignVirama => "kannada sign virama",
Kannada::LengthMark => "kannada length mark",
Kannada::AiLengthMark => "kannada ai length mark",
Kannada::LetterFa => "kannada letter fa",
Kannada::LetterVocalicRr => "kannada letter vocalic rr",
Kannada::LetterVocalicLl => "kannada letter vocalic ll",
Kannada::VowelSignVocalicL => "kannada vowel sign vocalic l",
Kannada::VowelSignVocalicLl => "kannada vowel sign vocalic ll",
Kannada::DigitZero => "kannada digit zero",
Kannada::DigitOne => "kannada digit one",
Kannada::DigitTwo => "kannada digit two",
Kannada::DigitThree => "kannada digit three",
Kannada::DigitFour => "kannada digit four",
Kannada::DigitFive => "kannada digit five",
Kannada::DigitSix => "kannada digit six",
Kannada::DigitSeven => "kannada digit seven",
Kannada::DigitEight => "kannada digit eight",
Kannada::DigitNine => "kannada digit nine",
Kannada::SignJihvamuliya => "kannada sign jihvamuliya",
Kannada::SignUpadhmaniya => "kannada sign upadhmaniya",
}
}
}