mod constants {
pub const CAPITAL_LETTER_A: char = '𐒰';
pub const CAPITAL_LETTER_AI: char = '𐒱';
pub const CAPITAL_LETTER_AIN: char = '𐒲';
pub const CAPITAL_LETTER_AH: char = '𐒳';
pub const CAPITAL_LETTER_BRA: char = '𐒴';
pub const CAPITAL_LETTER_CHA: char = '𐒵';
pub const CAPITAL_LETTER_EHCHA: char = '𐒶';
pub const CAPITAL_LETTER_E: char = '𐒷';
pub const CAPITAL_LETTER_EIN: char = '𐒸';
pub const CAPITAL_LETTER_HA: char = '𐒹';
pub const CAPITAL_LETTER_HYA: char = '𐒺';
pub const CAPITAL_LETTER_I: char = '𐒻';
pub const CAPITAL_LETTER_KA: char = '𐒼';
pub const CAPITAL_LETTER_EHKA: char = '𐒽';
pub const CAPITAL_LETTER_KYA: char = '𐒾';
pub const CAPITAL_LETTER_LA: char = '𐒿';
pub const CAPITAL_LETTER_MA: char = '𐓀';
pub const CAPITAL_LETTER_NA: char = '𐓁';
pub const CAPITAL_LETTER_O: char = '𐓂';
pub const CAPITAL_LETTER_OIN: char = '𐓃';
pub const CAPITAL_LETTER_PA: char = '𐓄';
pub const CAPITAL_LETTER_EHPA: char = '𐓅';
pub const CAPITAL_LETTER_SA: char = '𐓆';
pub const CAPITAL_LETTER_SHA: char = '𐓇';
pub const CAPITAL_LETTER_TA: char = '𐓈';
pub const CAPITAL_LETTER_EHTA: char = '𐓉';
pub const CAPITAL_LETTER_TSA: char = '𐓊';
pub const CAPITAL_LETTER_EHTSA: char = '𐓋';
pub const CAPITAL_LETTER_TSHA: char = '𐓌';
pub const CAPITAL_LETTER_DHA: char = '𐓍';
pub const CAPITAL_LETTER_U: char = '𐓎';
pub const CAPITAL_LETTER_WA: char = '𐓏';
pub const CAPITAL_LETTER_KHA: char = '𐓐';
pub const CAPITAL_LETTER_GHA: char = '𐓑';
pub const CAPITAL_LETTER_ZA: char = '𐓒';
pub const CAPITAL_LETTER_ZHA: char = '𐓓';
pub const SMALL_LETTER_A: char = '𐓘';
pub const SMALL_LETTER_AI: char = '𐓙';
pub const SMALL_LETTER_AIN: char = '𐓚';
pub const SMALL_LETTER_AH: char = '𐓛';
pub const SMALL_LETTER_BRA: char = '𐓜';
pub const SMALL_LETTER_CHA: char = '𐓝';
pub const SMALL_LETTER_EHCHA: char = '𐓞';
pub const SMALL_LETTER_E: char = '𐓟';
pub const SMALL_LETTER_EIN: char = '𐓠';
pub const SMALL_LETTER_HA: char = '𐓡';
pub const SMALL_LETTER_HYA: char = '𐓢';
pub const SMALL_LETTER_I: char = '𐓣';
pub const SMALL_LETTER_KA: char = '𐓤';
pub const SMALL_LETTER_EHKA: char = '𐓥';
pub const SMALL_LETTER_KYA: char = '𐓦';
pub const SMALL_LETTER_LA: char = '𐓧';
pub const SMALL_LETTER_MA: char = '𐓨';
pub const SMALL_LETTER_NA: char = '𐓩';
pub const SMALL_LETTER_O: char = '𐓪';
pub const SMALL_LETTER_OIN: char = '𐓫';
pub const SMALL_LETTER_PA: char = '𐓬';
pub const SMALL_LETTER_EHPA: char = '𐓭';
pub const SMALL_LETTER_SA: char = '𐓮';
pub const SMALL_LETTER_SHA: char = '𐓯';
pub const SMALL_LETTER_TA: char = '𐓰';
pub const SMALL_LETTER_EHTA: char = '𐓱';
pub const SMALL_LETTER_TSA: char = '𐓲';
pub const SMALL_LETTER_EHTSA: char = '𐓳';
pub const SMALL_LETTER_TSHA: char = '𐓴';
pub const SMALL_LETTER_DHA: char = '𐓵';
pub const SMALL_LETTER_U: char = '𐓶';
pub const SMALL_LETTER_WA: char = '𐓷';
pub const SMALL_LETTER_KHA: char = '𐓸';
pub const SMALL_LETTER_GHA: char = '𐓹';
pub const SMALL_LETTER_ZA: char = '𐓺';
pub const SMALL_LETTER_ZHA: char = '𐓻';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Osage {
CapitalLetterA,
CapitalLetterAi,
CapitalLetterAin,
CapitalLetterAh,
CapitalLetterBra,
CapitalLetterCha,
CapitalLetterEhcha,
CapitalLetterE,
CapitalLetterEin,
CapitalLetterHa,
CapitalLetterHya,
CapitalLetterI,
CapitalLetterKa,
CapitalLetterEhka,
CapitalLetterKya,
CapitalLetterLa,
CapitalLetterMa,
CapitalLetterNa,
CapitalLetterO,
CapitalLetterOin,
CapitalLetterPa,
CapitalLetterEhpa,
CapitalLetterSa,
CapitalLetterSha,
CapitalLetterTa,
CapitalLetterEhta,
CapitalLetterTsa,
CapitalLetterEhtsa,
CapitalLetterTsha,
CapitalLetterDha,
CapitalLetterU,
CapitalLetterWa,
CapitalLetterKha,
CapitalLetterGha,
CapitalLetterZa,
CapitalLetterZha,
SmallLetterA,
SmallLetterAi,
SmallLetterAin,
SmallLetterAh,
SmallLetterBra,
SmallLetterCha,
SmallLetterEhcha,
SmallLetterE,
SmallLetterEin,
SmallLetterHa,
SmallLetterHya,
SmallLetterI,
SmallLetterKa,
SmallLetterEhka,
SmallLetterKya,
SmallLetterLa,
SmallLetterMa,
SmallLetterNa,
SmallLetterO,
SmallLetterOin,
SmallLetterPa,
SmallLetterEhpa,
SmallLetterSa,
SmallLetterSha,
SmallLetterTa,
SmallLetterEhta,
SmallLetterTsa,
SmallLetterEhtsa,
SmallLetterTsha,
SmallLetterDha,
SmallLetterU,
SmallLetterWa,
SmallLetterKha,
SmallLetterGha,
SmallLetterZa,
SmallLetterZha,
}
impl Into<char> for Osage {
fn into(self) -> char {
use constants::*;
match self {
Osage::CapitalLetterA => CAPITAL_LETTER_A,
Osage::CapitalLetterAi => CAPITAL_LETTER_AI,
Osage::CapitalLetterAin => CAPITAL_LETTER_AIN,
Osage::CapitalLetterAh => CAPITAL_LETTER_AH,
Osage::CapitalLetterBra => CAPITAL_LETTER_BRA,
Osage::CapitalLetterCha => CAPITAL_LETTER_CHA,
Osage::CapitalLetterEhcha => CAPITAL_LETTER_EHCHA,
Osage::CapitalLetterE => CAPITAL_LETTER_E,
Osage::CapitalLetterEin => CAPITAL_LETTER_EIN,
Osage::CapitalLetterHa => CAPITAL_LETTER_HA,
Osage::CapitalLetterHya => CAPITAL_LETTER_HYA,
Osage::CapitalLetterI => CAPITAL_LETTER_I,
Osage::CapitalLetterKa => CAPITAL_LETTER_KA,
Osage::CapitalLetterEhka => CAPITAL_LETTER_EHKA,
Osage::CapitalLetterKya => CAPITAL_LETTER_KYA,
Osage::CapitalLetterLa => CAPITAL_LETTER_LA,
Osage::CapitalLetterMa => CAPITAL_LETTER_MA,
Osage::CapitalLetterNa => CAPITAL_LETTER_NA,
Osage::CapitalLetterO => CAPITAL_LETTER_O,
Osage::CapitalLetterOin => CAPITAL_LETTER_OIN,
Osage::CapitalLetterPa => CAPITAL_LETTER_PA,
Osage::CapitalLetterEhpa => CAPITAL_LETTER_EHPA,
Osage::CapitalLetterSa => CAPITAL_LETTER_SA,
Osage::CapitalLetterSha => CAPITAL_LETTER_SHA,
Osage::CapitalLetterTa => CAPITAL_LETTER_TA,
Osage::CapitalLetterEhta => CAPITAL_LETTER_EHTA,
Osage::CapitalLetterTsa => CAPITAL_LETTER_TSA,
Osage::CapitalLetterEhtsa => CAPITAL_LETTER_EHTSA,
Osage::CapitalLetterTsha => CAPITAL_LETTER_TSHA,
Osage::CapitalLetterDha => CAPITAL_LETTER_DHA,
Osage::CapitalLetterU => CAPITAL_LETTER_U,
Osage::CapitalLetterWa => CAPITAL_LETTER_WA,
Osage::CapitalLetterKha => CAPITAL_LETTER_KHA,
Osage::CapitalLetterGha => CAPITAL_LETTER_GHA,
Osage::CapitalLetterZa => CAPITAL_LETTER_ZA,
Osage::CapitalLetterZha => CAPITAL_LETTER_ZHA,
Osage::SmallLetterA => SMALL_LETTER_A,
Osage::SmallLetterAi => SMALL_LETTER_AI,
Osage::SmallLetterAin => SMALL_LETTER_AIN,
Osage::SmallLetterAh => SMALL_LETTER_AH,
Osage::SmallLetterBra => SMALL_LETTER_BRA,
Osage::SmallLetterCha => SMALL_LETTER_CHA,
Osage::SmallLetterEhcha => SMALL_LETTER_EHCHA,
Osage::SmallLetterE => SMALL_LETTER_E,
Osage::SmallLetterEin => SMALL_LETTER_EIN,
Osage::SmallLetterHa => SMALL_LETTER_HA,
Osage::SmallLetterHya => SMALL_LETTER_HYA,
Osage::SmallLetterI => SMALL_LETTER_I,
Osage::SmallLetterKa => SMALL_LETTER_KA,
Osage::SmallLetterEhka => SMALL_LETTER_EHKA,
Osage::SmallLetterKya => SMALL_LETTER_KYA,
Osage::SmallLetterLa => SMALL_LETTER_LA,
Osage::SmallLetterMa => SMALL_LETTER_MA,
Osage::SmallLetterNa => SMALL_LETTER_NA,
Osage::SmallLetterO => SMALL_LETTER_O,
Osage::SmallLetterOin => SMALL_LETTER_OIN,
Osage::SmallLetterPa => SMALL_LETTER_PA,
Osage::SmallLetterEhpa => SMALL_LETTER_EHPA,
Osage::SmallLetterSa => SMALL_LETTER_SA,
Osage::SmallLetterSha => SMALL_LETTER_SHA,
Osage::SmallLetterTa => SMALL_LETTER_TA,
Osage::SmallLetterEhta => SMALL_LETTER_EHTA,
Osage::SmallLetterTsa => SMALL_LETTER_TSA,
Osage::SmallLetterEhtsa => SMALL_LETTER_EHTSA,
Osage::SmallLetterTsha => SMALL_LETTER_TSHA,
Osage::SmallLetterDha => SMALL_LETTER_DHA,
Osage::SmallLetterU => SMALL_LETTER_U,
Osage::SmallLetterWa => SMALL_LETTER_WA,
Osage::SmallLetterKha => SMALL_LETTER_KHA,
Osage::SmallLetterGha => SMALL_LETTER_GHA,
Osage::SmallLetterZa => SMALL_LETTER_ZA,
Osage::SmallLetterZha => SMALL_LETTER_ZHA,
}
}
}
impl std::convert::TryFrom<char> for Osage {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
CAPITAL_LETTER_A => Ok(Osage::CapitalLetterA),
CAPITAL_LETTER_AI => Ok(Osage::CapitalLetterAi),
CAPITAL_LETTER_AIN => Ok(Osage::CapitalLetterAin),
CAPITAL_LETTER_AH => Ok(Osage::CapitalLetterAh),
CAPITAL_LETTER_BRA => Ok(Osage::CapitalLetterBra),
CAPITAL_LETTER_CHA => Ok(Osage::CapitalLetterCha),
CAPITAL_LETTER_EHCHA => Ok(Osage::CapitalLetterEhcha),
CAPITAL_LETTER_E => Ok(Osage::CapitalLetterE),
CAPITAL_LETTER_EIN => Ok(Osage::CapitalLetterEin),
CAPITAL_LETTER_HA => Ok(Osage::CapitalLetterHa),
CAPITAL_LETTER_HYA => Ok(Osage::CapitalLetterHya),
CAPITAL_LETTER_I => Ok(Osage::CapitalLetterI),
CAPITAL_LETTER_KA => Ok(Osage::CapitalLetterKa),
CAPITAL_LETTER_EHKA => Ok(Osage::CapitalLetterEhka),
CAPITAL_LETTER_KYA => Ok(Osage::CapitalLetterKya),
CAPITAL_LETTER_LA => Ok(Osage::CapitalLetterLa),
CAPITAL_LETTER_MA => Ok(Osage::CapitalLetterMa),
CAPITAL_LETTER_NA => Ok(Osage::CapitalLetterNa),
CAPITAL_LETTER_O => Ok(Osage::CapitalLetterO),
CAPITAL_LETTER_OIN => Ok(Osage::CapitalLetterOin),
CAPITAL_LETTER_PA => Ok(Osage::CapitalLetterPa),
CAPITAL_LETTER_EHPA => Ok(Osage::CapitalLetterEhpa),
CAPITAL_LETTER_SA => Ok(Osage::CapitalLetterSa),
CAPITAL_LETTER_SHA => Ok(Osage::CapitalLetterSha),
CAPITAL_LETTER_TA => Ok(Osage::CapitalLetterTa),
CAPITAL_LETTER_EHTA => Ok(Osage::CapitalLetterEhta),
CAPITAL_LETTER_TSA => Ok(Osage::CapitalLetterTsa),
CAPITAL_LETTER_EHTSA => Ok(Osage::CapitalLetterEhtsa),
CAPITAL_LETTER_TSHA => Ok(Osage::CapitalLetterTsha),
CAPITAL_LETTER_DHA => Ok(Osage::CapitalLetterDha),
CAPITAL_LETTER_U => Ok(Osage::CapitalLetterU),
CAPITAL_LETTER_WA => Ok(Osage::CapitalLetterWa),
CAPITAL_LETTER_KHA => Ok(Osage::CapitalLetterKha),
CAPITAL_LETTER_GHA => Ok(Osage::CapitalLetterGha),
CAPITAL_LETTER_ZA => Ok(Osage::CapitalLetterZa),
CAPITAL_LETTER_ZHA => Ok(Osage::CapitalLetterZha),
SMALL_LETTER_A => Ok(Osage::SmallLetterA),
SMALL_LETTER_AI => Ok(Osage::SmallLetterAi),
SMALL_LETTER_AIN => Ok(Osage::SmallLetterAin),
SMALL_LETTER_AH => Ok(Osage::SmallLetterAh),
SMALL_LETTER_BRA => Ok(Osage::SmallLetterBra),
SMALL_LETTER_CHA => Ok(Osage::SmallLetterCha),
SMALL_LETTER_EHCHA => Ok(Osage::SmallLetterEhcha),
SMALL_LETTER_E => Ok(Osage::SmallLetterE),
SMALL_LETTER_EIN => Ok(Osage::SmallLetterEin),
SMALL_LETTER_HA => Ok(Osage::SmallLetterHa),
SMALL_LETTER_HYA => Ok(Osage::SmallLetterHya),
SMALL_LETTER_I => Ok(Osage::SmallLetterI),
SMALL_LETTER_KA => Ok(Osage::SmallLetterKa),
SMALL_LETTER_EHKA => Ok(Osage::SmallLetterEhka),
SMALL_LETTER_KYA => Ok(Osage::SmallLetterKya),
SMALL_LETTER_LA => Ok(Osage::SmallLetterLa),
SMALL_LETTER_MA => Ok(Osage::SmallLetterMa),
SMALL_LETTER_NA => Ok(Osage::SmallLetterNa),
SMALL_LETTER_O => Ok(Osage::SmallLetterO),
SMALL_LETTER_OIN => Ok(Osage::SmallLetterOin),
SMALL_LETTER_PA => Ok(Osage::SmallLetterPa),
SMALL_LETTER_EHPA => Ok(Osage::SmallLetterEhpa),
SMALL_LETTER_SA => Ok(Osage::SmallLetterSa),
SMALL_LETTER_SHA => Ok(Osage::SmallLetterSha),
SMALL_LETTER_TA => Ok(Osage::SmallLetterTa),
SMALL_LETTER_EHTA => Ok(Osage::SmallLetterEhta),
SMALL_LETTER_TSA => Ok(Osage::SmallLetterTsa),
SMALL_LETTER_EHTSA => Ok(Osage::SmallLetterEhtsa),
SMALL_LETTER_TSHA => Ok(Osage::SmallLetterTsha),
SMALL_LETTER_DHA => Ok(Osage::SmallLetterDha),
SMALL_LETTER_U => Ok(Osage::SmallLetterU),
SMALL_LETTER_WA => Ok(Osage::SmallLetterWa),
SMALL_LETTER_KHA => Ok(Osage::SmallLetterKha),
SMALL_LETTER_GHA => Ok(Osage::SmallLetterGha),
SMALL_LETTER_ZA => Ok(Osage::SmallLetterZa),
SMALL_LETTER_ZHA => Ok(Osage::SmallLetterZha),
_ => Err(()),
}
}
}
impl Into<u32> for Osage {
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 Osage {
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 Osage {
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 Osage {
pub fn new() -> Self {
Osage::CapitalLetterA
}
pub fn name(&self) -> &str {
match self {
Osage::CapitalLetterA => "osage capital letter a",
Osage::CapitalLetterAi => "osage capital letter ai",
Osage::CapitalLetterAin => "osage capital letter ain",
Osage::CapitalLetterAh => "osage capital letter ah",
Osage::CapitalLetterBra => "osage capital letter bra",
Osage::CapitalLetterCha => "osage capital letter cha",
Osage::CapitalLetterEhcha => "osage capital letter ehcha",
Osage::CapitalLetterE => "osage capital letter e",
Osage::CapitalLetterEin => "osage capital letter ein",
Osage::CapitalLetterHa => "osage capital letter ha",
Osage::CapitalLetterHya => "osage capital letter hya",
Osage::CapitalLetterI => "osage capital letter i",
Osage::CapitalLetterKa => "osage capital letter ka",
Osage::CapitalLetterEhka => "osage capital letter ehka",
Osage::CapitalLetterKya => "osage capital letter kya",
Osage::CapitalLetterLa => "osage capital letter la",
Osage::CapitalLetterMa => "osage capital letter ma",
Osage::CapitalLetterNa => "osage capital letter na",
Osage::CapitalLetterO => "osage capital letter o",
Osage::CapitalLetterOin => "osage capital letter oin",
Osage::CapitalLetterPa => "osage capital letter pa",
Osage::CapitalLetterEhpa => "osage capital letter ehpa",
Osage::CapitalLetterSa => "osage capital letter sa",
Osage::CapitalLetterSha => "osage capital letter sha",
Osage::CapitalLetterTa => "osage capital letter ta",
Osage::CapitalLetterEhta => "osage capital letter ehta",
Osage::CapitalLetterTsa => "osage capital letter tsa",
Osage::CapitalLetterEhtsa => "osage capital letter ehtsa",
Osage::CapitalLetterTsha => "osage capital letter tsha",
Osage::CapitalLetterDha => "osage capital letter dha",
Osage::CapitalLetterU => "osage capital letter u",
Osage::CapitalLetterWa => "osage capital letter wa",
Osage::CapitalLetterKha => "osage capital letter kha",
Osage::CapitalLetterGha => "osage capital letter gha",
Osage::CapitalLetterZa => "osage capital letter za",
Osage::CapitalLetterZha => "osage capital letter zha",
Osage::SmallLetterA => "osage small letter a",
Osage::SmallLetterAi => "osage small letter ai",
Osage::SmallLetterAin => "osage small letter ain",
Osage::SmallLetterAh => "osage small letter ah",
Osage::SmallLetterBra => "osage small letter bra",
Osage::SmallLetterCha => "osage small letter cha",
Osage::SmallLetterEhcha => "osage small letter ehcha",
Osage::SmallLetterE => "osage small letter e",
Osage::SmallLetterEin => "osage small letter ein",
Osage::SmallLetterHa => "osage small letter ha",
Osage::SmallLetterHya => "osage small letter hya",
Osage::SmallLetterI => "osage small letter i",
Osage::SmallLetterKa => "osage small letter ka",
Osage::SmallLetterEhka => "osage small letter ehka",
Osage::SmallLetterKya => "osage small letter kya",
Osage::SmallLetterLa => "osage small letter la",
Osage::SmallLetterMa => "osage small letter ma",
Osage::SmallLetterNa => "osage small letter na",
Osage::SmallLetterO => "osage small letter o",
Osage::SmallLetterOin => "osage small letter oin",
Osage::SmallLetterPa => "osage small letter pa",
Osage::SmallLetterEhpa => "osage small letter ehpa",
Osage::SmallLetterSa => "osage small letter sa",
Osage::SmallLetterSha => "osage small letter sha",
Osage::SmallLetterTa => "osage small letter ta",
Osage::SmallLetterEhta => "osage small letter ehta",
Osage::SmallLetterTsa => "osage small letter tsa",
Osage::SmallLetterEhtsa => "osage small letter ehtsa",
Osage::SmallLetterTsha => "osage small letter tsha",
Osage::SmallLetterDha => "osage small letter dha",
Osage::SmallLetterU => "osage small letter u",
Osage::SmallLetterWa => "osage small letter wa",
Osage::SmallLetterKha => "osage small letter kha",
Osage::SmallLetterGha => "osage small letter gha",
Osage::SmallLetterZa => "osage small letter za",
Osage::SmallLetterZha => "osage small letter zha",
}
}
}