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_L: 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 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_AI: char = 'ୈ';
pub const VOWEL_SIGN_O: char = 'ୋ';
pub const VOWEL_SIGN_AU: char = 'ୌ';
pub const SIGN_VIRAMA: char = '୍';
pub const AI_LENGTH_MARK: char = 'ୖ';
pub const AU_LENGTH_MARK: char = 'ୗ';
pub const LETTER_RRA: char = 'ଡ଼';
pub const LETTER_RHA: char = 'ଢ଼';
pub const LETTER_YYA: 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 ISSHAR: char = '୰';
pub const LETTER_WA: char = 'ୱ';
pub const FRACTION_ONE_QUARTER: char = '୲';
pub const FRACTION_ONE_HALF: char = '୳';
pub const FRACTION_THREE_QUARTERS: char = '୴';
pub const FRACTION_ONE_SIXTEENTH: char = '୵';
pub const FRACTION_ONE_EIGHTH: char = '୶';
pub const FRACTION_THREE_SIXTEENTHS: char = '୷';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Oriya {
SignCandrabindu,
SignAnusvara,
SignVisarga,
LetterA,
LetterAa,
LetterI,
LetterIi,
LetterU,
LetterUu,
LetterVocalicR,
LetterVocalicL,
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,
SignNukta,
SignAvagraha,
VowelSignAa,
VowelSignI,
VowelSignIi,
VowelSignU,
VowelSignUu,
VowelSignVocalicR,
VowelSignVocalicRr,
VowelSignE,
VowelSignAi,
VowelSignO,
VowelSignAu,
SignVirama,
AiLengthMark,
AuLengthMark,
LetterRra,
LetterRha,
LetterYya,
LetterVocalicRr,
LetterVocalicLl,
VowelSignVocalicL,
VowelSignVocalicLl,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
Isshar,
LetterWa,
FractionOneQuarter,
FractionOneHalf,
FractionThreeQuarters,
FractionOneSixteenth,
FractionOneEighth,
FractionThreeSixteenths,
}
impl Into<char> for Oriya {
fn into(self) -> char {
use constants::*;
match self {
Oriya::SignCandrabindu => SIGN_CANDRABINDU,
Oriya::SignAnusvara => SIGN_ANUSVARA,
Oriya::SignVisarga => SIGN_VISARGA,
Oriya::LetterA => LETTER_A,
Oriya::LetterAa => LETTER_AA,
Oriya::LetterI => LETTER_I,
Oriya::LetterIi => LETTER_II,
Oriya::LetterU => LETTER_U,
Oriya::LetterUu => LETTER_UU,
Oriya::LetterVocalicR => LETTER_VOCALIC_R,
Oriya::LetterVocalicL => LETTER_VOCALIC_L,
Oriya::LetterE => LETTER_E,
Oriya::LetterAi => LETTER_AI,
Oriya::LetterO => LETTER_O,
Oriya::LetterAu => LETTER_AU,
Oriya::LetterKa => LETTER_KA,
Oriya::LetterKha => LETTER_KHA,
Oriya::LetterGa => LETTER_GA,
Oriya::LetterGha => LETTER_GHA,
Oriya::LetterNga => LETTER_NGA,
Oriya::LetterCa => LETTER_CA,
Oriya::LetterCha => LETTER_CHA,
Oriya::LetterJa => LETTER_JA,
Oriya::LetterJha => LETTER_JHA,
Oriya::LetterNya => LETTER_NYA,
Oriya::LetterTta => LETTER_TTA,
Oriya::LetterTtha => LETTER_TTHA,
Oriya::LetterDda => LETTER_DDA,
Oriya::LetterDdha => LETTER_DDHA,
Oriya::LetterNna => LETTER_NNA,
Oriya::LetterTa => LETTER_TA,
Oriya::LetterTha => LETTER_THA,
Oriya::LetterDa => LETTER_DA,
Oriya::LetterDha => LETTER_DHA,
Oriya::LetterNa => LETTER_NA,
Oriya::LetterPa => LETTER_PA,
Oriya::LetterPha => LETTER_PHA,
Oriya::LetterBa => LETTER_BA,
Oriya::LetterBha => LETTER_BHA,
Oriya::LetterMa => LETTER_MA,
Oriya::LetterYa => LETTER_YA,
Oriya::LetterRa => LETTER_RA,
Oriya::LetterLa => LETTER_LA,
Oriya::LetterLla => LETTER_LLA,
Oriya::LetterVa => LETTER_VA,
Oriya::LetterSha => LETTER_SHA,
Oriya::LetterSsa => LETTER_SSA,
Oriya::LetterSa => LETTER_SA,
Oriya::LetterHa => LETTER_HA,
Oriya::SignNukta => SIGN_NUKTA,
Oriya::SignAvagraha => SIGN_AVAGRAHA,
Oriya::VowelSignAa => VOWEL_SIGN_AA,
Oriya::VowelSignI => VOWEL_SIGN_I,
Oriya::VowelSignIi => VOWEL_SIGN_II,
Oriya::VowelSignU => VOWEL_SIGN_U,
Oriya::VowelSignUu => VOWEL_SIGN_UU,
Oriya::VowelSignVocalicR => VOWEL_SIGN_VOCALIC_R,
Oriya::VowelSignVocalicRr => VOWEL_SIGN_VOCALIC_RR,
Oriya::VowelSignE => VOWEL_SIGN_E,
Oriya::VowelSignAi => VOWEL_SIGN_AI,
Oriya::VowelSignO => VOWEL_SIGN_O,
Oriya::VowelSignAu => VOWEL_SIGN_AU,
Oriya::SignVirama => SIGN_VIRAMA,
Oriya::AiLengthMark => AI_LENGTH_MARK,
Oriya::AuLengthMark => AU_LENGTH_MARK,
Oriya::LetterRra => LETTER_RRA,
Oriya::LetterRha => LETTER_RHA,
Oriya::LetterYya => LETTER_YYA,
Oriya::LetterVocalicRr => LETTER_VOCALIC_RR,
Oriya::LetterVocalicLl => LETTER_VOCALIC_LL,
Oriya::VowelSignVocalicL => VOWEL_SIGN_VOCALIC_L,
Oriya::VowelSignVocalicLl => VOWEL_SIGN_VOCALIC_LL,
Oriya::DigitZero => DIGIT_ZERO,
Oriya::DigitOne => DIGIT_ONE,
Oriya::DigitTwo => DIGIT_TWO,
Oriya::DigitThree => DIGIT_THREE,
Oriya::DigitFour => DIGIT_FOUR,
Oriya::DigitFive => DIGIT_FIVE,
Oriya::DigitSix => DIGIT_SIX,
Oriya::DigitSeven => DIGIT_SEVEN,
Oriya::DigitEight => DIGIT_EIGHT,
Oriya::DigitNine => DIGIT_NINE,
Oriya::Isshar => ISSHAR,
Oriya::LetterWa => LETTER_WA,
Oriya::FractionOneQuarter => FRACTION_ONE_QUARTER,
Oriya::FractionOneHalf => FRACTION_ONE_HALF,
Oriya::FractionThreeQuarters => FRACTION_THREE_QUARTERS,
Oriya::FractionOneSixteenth => FRACTION_ONE_SIXTEENTH,
Oriya::FractionOneEighth => FRACTION_ONE_EIGHTH,
Oriya::FractionThreeSixteenths => FRACTION_THREE_SIXTEENTHS,
}
}
}
impl std::convert::TryFrom<char> for Oriya {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
SIGN_CANDRABINDU => Ok(Oriya::SignCandrabindu),
SIGN_ANUSVARA => Ok(Oriya::SignAnusvara),
SIGN_VISARGA => Ok(Oriya::SignVisarga),
LETTER_A => Ok(Oriya::LetterA),
LETTER_AA => Ok(Oriya::LetterAa),
LETTER_I => Ok(Oriya::LetterI),
LETTER_II => Ok(Oriya::LetterIi),
LETTER_U => Ok(Oriya::LetterU),
LETTER_UU => Ok(Oriya::LetterUu),
LETTER_VOCALIC_R => Ok(Oriya::LetterVocalicR),
LETTER_VOCALIC_L => Ok(Oriya::LetterVocalicL),
LETTER_E => Ok(Oriya::LetterE),
LETTER_AI => Ok(Oriya::LetterAi),
LETTER_O => Ok(Oriya::LetterO),
LETTER_AU => Ok(Oriya::LetterAu),
LETTER_KA => Ok(Oriya::LetterKa),
LETTER_KHA => Ok(Oriya::LetterKha),
LETTER_GA => Ok(Oriya::LetterGa),
LETTER_GHA => Ok(Oriya::LetterGha),
LETTER_NGA => Ok(Oriya::LetterNga),
LETTER_CA => Ok(Oriya::LetterCa),
LETTER_CHA => Ok(Oriya::LetterCha),
LETTER_JA => Ok(Oriya::LetterJa),
LETTER_JHA => Ok(Oriya::LetterJha),
LETTER_NYA => Ok(Oriya::LetterNya),
LETTER_TTA => Ok(Oriya::LetterTta),
LETTER_TTHA => Ok(Oriya::LetterTtha),
LETTER_DDA => Ok(Oriya::LetterDda),
LETTER_DDHA => Ok(Oriya::LetterDdha),
LETTER_NNA => Ok(Oriya::LetterNna),
LETTER_TA => Ok(Oriya::LetterTa),
LETTER_THA => Ok(Oriya::LetterTha),
LETTER_DA => Ok(Oriya::LetterDa),
LETTER_DHA => Ok(Oriya::LetterDha),
LETTER_NA => Ok(Oriya::LetterNa),
LETTER_PA => Ok(Oriya::LetterPa),
LETTER_PHA => Ok(Oriya::LetterPha),
LETTER_BA => Ok(Oriya::LetterBa),
LETTER_BHA => Ok(Oriya::LetterBha),
LETTER_MA => Ok(Oriya::LetterMa),
LETTER_YA => Ok(Oriya::LetterYa),
LETTER_RA => Ok(Oriya::LetterRa),
LETTER_LA => Ok(Oriya::LetterLa),
LETTER_LLA => Ok(Oriya::LetterLla),
LETTER_VA => Ok(Oriya::LetterVa),
LETTER_SHA => Ok(Oriya::LetterSha),
LETTER_SSA => Ok(Oriya::LetterSsa),
LETTER_SA => Ok(Oriya::LetterSa),
LETTER_HA => Ok(Oriya::LetterHa),
SIGN_NUKTA => Ok(Oriya::SignNukta),
SIGN_AVAGRAHA => Ok(Oriya::SignAvagraha),
VOWEL_SIGN_AA => Ok(Oriya::VowelSignAa),
VOWEL_SIGN_I => Ok(Oriya::VowelSignI),
VOWEL_SIGN_II => Ok(Oriya::VowelSignIi),
VOWEL_SIGN_U => Ok(Oriya::VowelSignU),
VOWEL_SIGN_UU => Ok(Oriya::VowelSignUu),
VOWEL_SIGN_VOCALIC_R => Ok(Oriya::VowelSignVocalicR),
VOWEL_SIGN_VOCALIC_RR => Ok(Oriya::VowelSignVocalicRr),
VOWEL_SIGN_E => Ok(Oriya::VowelSignE),
VOWEL_SIGN_AI => Ok(Oriya::VowelSignAi),
VOWEL_SIGN_O => Ok(Oriya::VowelSignO),
VOWEL_SIGN_AU => Ok(Oriya::VowelSignAu),
SIGN_VIRAMA => Ok(Oriya::SignVirama),
AI_LENGTH_MARK => Ok(Oriya::AiLengthMark),
AU_LENGTH_MARK => Ok(Oriya::AuLengthMark),
LETTER_RRA => Ok(Oriya::LetterRra),
LETTER_RHA => Ok(Oriya::LetterRha),
LETTER_YYA => Ok(Oriya::LetterYya),
LETTER_VOCALIC_RR => Ok(Oriya::LetterVocalicRr),
LETTER_VOCALIC_LL => Ok(Oriya::LetterVocalicLl),
VOWEL_SIGN_VOCALIC_L => Ok(Oriya::VowelSignVocalicL),
VOWEL_SIGN_VOCALIC_LL => Ok(Oriya::VowelSignVocalicLl),
DIGIT_ZERO => Ok(Oriya::DigitZero),
DIGIT_ONE => Ok(Oriya::DigitOne),
DIGIT_TWO => Ok(Oriya::DigitTwo),
DIGIT_THREE => Ok(Oriya::DigitThree),
DIGIT_FOUR => Ok(Oriya::DigitFour),
DIGIT_FIVE => Ok(Oriya::DigitFive),
DIGIT_SIX => Ok(Oriya::DigitSix),
DIGIT_SEVEN => Ok(Oriya::DigitSeven),
DIGIT_EIGHT => Ok(Oriya::DigitEight),
DIGIT_NINE => Ok(Oriya::DigitNine),
ISSHAR => Ok(Oriya::Isshar),
LETTER_WA => Ok(Oriya::LetterWa),
FRACTION_ONE_QUARTER => Ok(Oriya::FractionOneQuarter),
FRACTION_ONE_HALF => Ok(Oriya::FractionOneHalf),
FRACTION_THREE_QUARTERS => Ok(Oriya::FractionThreeQuarters),
FRACTION_ONE_SIXTEENTH => Ok(Oriya::FractionOneSixteenth),
FRACTION_ONE_EIGHTH => Ok(Oriya::FractionOneEighth),
FRACTION_THREE_SIXTEENTHS => Ok(Oriya::FractionThreeSixteenths),
_ => Err(()),
}
}
}
impl Into<u32> for Oriya {
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 Oriya {
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 Oriya {
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 Oriya {
pub fn new() -> Self {
Oriya::SignCandrabindu
}
pub fn name(&self) -> &str {
match self {
Oriya::SignCandrabindu => "oriya sign candrabindu",
Oriya::SignAnusvara => "oriya sign anusvara",
Oriya::SignVisarga => "oriya sign visarga",
Oriya::LetterA => "oriya letter a",
Oriya::LetterAa => "oriya letter aa",
Oriya::LetterI => "oriya letter i",
Oriya::LetterIi => "oriya letter ii",
Oriya::LetterU => "oriya letter u",
Oriya::LetterUu => "oriya letter uu",
Oriya::LetterVocalicR => "oriya letter vocalic r",
Oriya::LetterVocalicL => "oriya letter vocalic l",
Oriya::LetterE => "oriya letter e",
Oriya::LetterAi => "oriya letter ai",
Oriya::LetterO => "oriya letter o",
Oriya::LetterAu => "oriya letter au",
Oriya::LetterKa => "oriya letter ka",
Oriya::LetterKha => "oriya letter kha",
Oriya::LetterGa => "oriya letter ga",
Oriya::LetterGha => "oriya letter gha",
Oriya::LetterNga => "oriya letter nga",
Oriya::LetterCa => "oriya letter ca",
Oriya::LetterCha => "oriya letter cha",
Oriya::LetterJa => "oriya letter ja",
Oriya::LetterJha => "oriya letter jha",
Oriya::LetterNya => "oriya letter nya",
Oriya::LetterTta => "oriya letter tta",
Oriya::LetterTtha => "oriya letter ttha",
Oriya::LetterDda => "oriya letter dda",
Oriya::LetterDdha => "oriya letter ddha",
Oriya::LetterNna => "oriya letter nna",
Oriya::LetterTa => "oriya letter ta",
Oriya::LetterTha => "oriya letter tha",
Oriya::LetterDa => "oriya letter da",
Oriya::LetterDha => "oriya letter dha",
Oriya::LetterNa => "oriya letter na",
Oriya::LetterPa => "oriya letter pa",
Oriya::LetterPha => "oriya letter pha",
Oriya::LetterBa => "oriya letter ba",
Oriya::LetterBha => "oriya letter bha",
Oriya::LetterMa => "oriya letter ma",
Oriya::LetterYa => "oriya letter ya",
Oriya::LetterRa => "oriya letter ra",
Oriya::LetterLa => "oriya letter la",
Oriya::LetterLla => "oriya letter lla",
Oriya::LetterVa => "oriya letter va",
Oriya::LetterSha => "oriya letter sha",
Oriya::LetterSsa => "oriya letter ssa",
Oriya::LetterSa => "oriya letter sa",
Oriya::LetterHa => "oriya letter ha",
Oriya::SignNukta => "oriya sign nukta",
Oriya::SignAvagraha => "oriya sign avagraha",
Oriya::VowelSignAa => "oriya vowel sign aa",
Oriya::VowelSignI => "oriya vowel sign i",
Oriya::VowelSignIi => "oriya vowel sign ii",
Oriya::VowelSignU => "oriya vowel sign u",
Oriya::VowelSignUu => "oriya vowel sign uu",
Oriya::VowelSignVocalicR => "oriya vowel sign vocalic r",
Oriya::VowelSignVocalicRr => "oriya vowel sign vocalic rr",
Oriya::VowelSignE => "oriya vowel sign e",
Oriya::VowelSignAi => "oriya vowel sign ai",
Oriya::VowelSignO => "oriya vowel sign o",
Oriya::VowelSignAu => "oriya vowel sign au",
Oriya::SignVirama => "oriya sign virama",
Oriya::AiLengthMark => "oriya ai length mark",
Oriya::AuLengthMark => "oriya au length mark",
Oriya::LetterRra => "oriya letter rra",
Oriya::LetterRha => "oriya letter rha",
Oriya::LetterYya => "oriya letter yya",
Oriya::LetterVocalicRr => "oriya letter vocalic rr",
Oriya::LetterVocalicLl => "oriya letter vocalic ll",
Oriya::VowelSignVocalicL => "oriya vowel sign vocalic l",
Oriya::VowelSignVocalicLl => "oriya vowel sign vocalic ll",
Oriya::DigitZero => "oriya digit zero",
Oriya::DigitOne => "oriya digit one",
Oriya::DigitTwo => "oriya digit two",
Oriya::DigitThree => "oriya digit three",
Oriya::DigitFour => "oriya digit four",
Oriya::DigitFive => "oriya digit five",
Oriya::DigitSix => "oriya digit six",
Oriya::DigitSeven => "oriya digit seven",
Oriya::DigitEight => "oriya digit eight",
Oriya::DigitNine => "oriya digit nine",
Oriya::Isshar => "oriya isshar",
Oriya::LetterWa => "oriya letter wa",
Oriya::FractionOneQuarter => "oriya fraction one quarter",
Oriya::FractionOneHalf => "oriya fraction one half",
Oriya::FractionThreeQuarters => "oriya fraction three quarters",
Oriya::FractionOneSixteenth => "oriya fraction one sixteenth",
Oriya::FractionOneEighth => "oriya fraction one eighth",
Oriya::FractionThreeSixteenths => "oriya fraction three sixteenths",
}
}
}