#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Glagolitic {
CapitalLetterAzu,
CapitalLetterBuky,
CapitalLetterVede,
CapitalLetterGlagoli,
CapitalLetterDobro,
CapitalLetterYestu,
CapitalLetterZhivete,
CapitalLetterDzelo,
CapitalLetterZemlja,
CapitalLetterIzhe,
CapitalLetterInitialIzhe,
CapitalLetterI,
CapitalLetterDjervi,
CapitalLetterKako,
CapitalLetterLjudije,
CapitalLetterMyslite,
CapitalLetterNashi,
CapitalLetterOnu,
CapitalLetterPokoji,
CapitalLetterRitsi,
CapitalLetterSlovo,
CapitalLetterTvrido,
CapitalLetterUku,
CapitalLetterFritu,
CapitalLetterHeru,
CapitalLetterOtu,
CapitalLetterPe,
CapitalLetterShta,
CapitalLetterTsi,
CapitalLetterChrivi,
CapitalLetterSha,
CapitalLetterYeru,
CapitalLetterYeri,
CapitalLetterYati,
CapitalLetterSpideryHa,
CapitalLetterYu,
CapitalLetterSmallYus,
CapitalLetterSmallYusWithTail,
CapitalLetterYo,
CapitalLetterIotatedSmallYus,
CapitalLetterBigYus,
CapitalLetterIotatedBigYus,
CapitalLetterFita,
CapitalLetterIzhitsa,
CapitalLetterShtapic,
CapitalLetterTrokutastiA,
CapitalLetterLatinateMyslite,
SmallLetterAzu,
SmallLetterBuky,
SmallLetterVede,
SmallLetterGlagoli,
SmallLetterDobro,
SmallLetterYestu,
SmallLetterZhivete,
SmallLetterDzelo,
SmallLetterZemlja,
SmallLetterIzhe,
SmallLetterInitialIzhe,
SmallLetterI,
SmallLetterDjervi,
SmallLetterKako,
SmallLetterLjudije,
SmallLetterMyslite,
SmallLetterNashi,
SmallLetterOnu,
SmallLetterPokoji,
SmallLetterRitsi,
SmallLetterSlovo,
SmallLetterTvrido,
SmallLetterUku,
SmallLetterFritu,
SmallLetterHeru,
SmallLetterOtu,
SmallLetterPe,
SmallLetterShta,
SmallLetterTsi,
SmallLetterChrivi,
SmallLetterSha,
SmallLetterYeru,
SmallLetterYeri,
SmallLetterYati,
SmallLetterSpideryHa,
SmallLetterYu,
SmallLetterSmallYus,
SmallLetterSmallYusWithTail,
SmallLetterYo,
SmallLetterIotatedSmallYus,
SmallLetterBigYus,
SmallLetterIotatedBigYus,
SmallLetterFita,
SmallLetterIzhitsa,
SmallLetterShtapic,
SmallLetterTrokutastiA,
SmallLetterLatinateMyslite,
}
impl Into<char> for Glagolitic {
fn into(self) -> char {
match self {
Glagolitic::CapitalLetterAzu => 'Ⰰ',
Glagolitic::CapitalLetterBuky => 'Ⰱ',
Glagolitic::CapitalLetterVede => 'Ⰲ',
Glagolitic::CapitalLetterGlagoli => 'Ⰳ',
Glagolitic::CapitalLetterDobro => 'Ⰴ',
Glagolitic::CapitalLetterYestu => 'Ⰵ',
Glagolitic::CapitalLetterZhivete => 'Ⰶ',
Glagolitic::CapitalLetterDzelo => 'Ⰷ',
Glagolitic::CapitalLetterZemlja => 'Ⰸ',
Glagolitic::CapitalLetterIzhe => 'Ⰹ',
Glagolitic::CapitalLetterInitialIzhe => 'Ⰺ',
Glagolitic::CapitalLetterI => 'Ⰻ',
Glagolitic::CapitalLetterDjervi => 'Ⰼ',
Glagolitic::CapitalLetterKako => 'Ⰽ',
Glagolitic::CapitalLetterLjudije => 'Ⰾ',
Glagolitic::CapitalLetterMyslite => 'Ⰿ',
Glagolitic::CapitalLetterNashi => 'Ⱀ',
Glagolitic::CapitalLetterOnu => 'Ⱁ',
Glagolitic::CapitalLetterPokoji => 'Ⱂ',
Glagolitic::CapitalLetterRitsi => 'Ⱃ',
Glagolitic::CapitalLetterSlovo => 'Ⱄ',
Glagolitic::CapitalLetterTvrido => 'Ⱅ',
Glagolitic::CapitalLetterUku => 'Ⱆ',
Glagolitic::CapitalLetterFritu => 'Ⱇ',
Glagolitic::CapitalLetterHeru => 'Ⱈ',
Glagolitic::CapitalLetterOtu => 'Ⱉ',
Glagolitic::CapitalLetterPe => 'Ⱊ',
Glagolitic::CapitalLetterShta => 'Ⱋ',
Glagolitic::CapitalLetterTsi => 'Ⱌ',
Glagolitic::CapitalLetterChrivi => 'Ⱍ',
Glagolitic::CapitalLetterSha => 'Ⱎ',
Glagolitic::CapitalLetterYeru => 'Ⱏ',
Glagolitic::CapitalLetterYeri => 'Ⱐ',
Glagolitic::CapitalLetterYati => 'Ⱑ',
Glagolitic::CapitalLetterSpideryHa => 'Ⱒ',
Glagolitic::CapitalLetterYu => 'Ⱓ',
Glagolitic::CapitalLetterSmallYus => 'Ⱔ',
Glagolitic::CapitalLetterSmallYusWithTail => 'Ⱕ',
Glagolitic::CapitalLetterYo => 'Ⱖ',
Glagolitic::CapitalLetterIotatedSmallYus => 'Ⱗ',
Glagolitic::CapitalLetterBigYus => 'Ⱘ',
Glagolitic::CapitalLetterIotatedBigYus => 'Ⱙ',
Glagolitic::CapitalLetterFita => 'Ⱚ',
Glagolitic::CapitalLetterIzhitsa => 'Ⱛ',
Glagolitic::CapitalLetterShtapic => 'Ⱜ',
Glagolitic::CapitalLetterTrokutastiA => 'Ⱝ',
Glagolitic::CapitalLetterLatinateMyslite => 'Ⱞ',
Glagolitic::SmallLetterAzu => 'ⰰ',
Glagolitic::SmallLetterBuky => 'ⰱ',
Glagolitic::SmallLetterVede => 'ⰲ',
Glagolitic::SmallLetterGlagoli => 'ⰳ',
Glagolitic::SmallLetterDobro => 'ⰴ',
Glagolitic::SmallLetterYestu => 'ⰵ',
Glagolitic::SmallLetterZhivete => 'ⰶ',
Glagolitic::SmallLetterDzelo => 'ⰷ',
Glagolitic::SmallLetterZemlja => 'ⰸ',
Glagolitic::SmallLetterIzhe => 'ⰹ',
Glagolitic::SmallLetterInitialIzhe => 'ⰺ',
Glagolitic::SmallLetterI => 'ⰻ',
Glagolitic::SmallLetterDjervi => 'ⰼ',
Glagolitic::SmallLetterKako => 'ⰽ',
Glagolitic::SmallLetterLjudije => 'ⰾ',
Glagolitic::SmallLetterMyslite => 'ⰿ',
Glagolitic::SmallLetterNashi => 'ⱀ',
Glagolitic::SmallLetterOnu => 'ⱁ',
Glagolitic::SmallLetterPokoji => 'ⱂ',
Glagolitic::SmallLetterRitsi => 'ⱃ',
Glagolitic::SmallLetterSlovo => 'ⱄ',
Glagolitic::SmallLetterTvrido => 'ⱅ',
Glagolitic::SmallLetterUku => 'ⱆ',
Glagolitic::SmallLetterFritu => 'ⱇ',
Glagolitic::SmallLetterHeru => 'ⱈ',
Glagolitic::SmallLetterOtu => 'ⱉ',
Glagolitic::SmallLetterPe => 'ⱊ',
Glagolitic::SmallLetterShta => 'ⱋ',
Glagolitic::SmallLetterTsi => 'ⱌ',
Glagolitic::SmallLetterChrivi => 'ⱍ',
Glagolitic::SmallLetterSha => 'ⱎ',
Glagolitic::SmallLetterYeru => 'ⱏ',
Glagolitic::SmallLetterYeri => 'ⱐ',
Glagolitic::SmallLetterYati => 'ⱑ',
Glagolitic::SmallLetterSpideryHa => 'ⱒ',
Glagolitic::SmallLetterYu => 'ⱓ',
Glagolitic::SmallLetterSmallYus => 'ⱔ',
Glagolitic::SmallLetterSmallYusWithTail => 'ⱕ',
Glagolitic::SmallLetterYo => 'ⱖ',
Glagolitic::SmallLetterIotatedSmallYus => 'ⱗ',
Glagolitic::SmallLetterBigYus => 'ⱘ',
Glagolitic::SmallLetterIotatedBigYus => 'ⱙ',
Glagolitic::SmallLetterFita => 'ⱚ',
Glagolitic::SmallLetterIzhitsa => 'ⱛ',
Glagolitic::SmallLetterShtapic => 'ⱜ',
Glagolitic::SmallLetterTrokutastiA => 'ⱝ',
Glagolitic::SmallLetterLatinateMyslite => 'ⱞ',
}
}
}
impl std::convert::TryFrom<char> for Glagolitic {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'Ⰰ' => Ok(Glagolitic::CapitalLetterAzu),
'Ⰱ' => Ok(Glagolitic::CapitalLetterBuky),
'Ⰲ' => Ok(Glagolitic::CapitalLetterVede),
'Ⰳ' => Ok(Glagolitic::CapitalLetterGlagoli),
'Ⰴ' => Ok(Glagolitic::CapitalLetterDobro),
'Ⰵ' => Ok(Glagolitic::CapitalLetterYestu),
'Ⰶ' => Ok(Glagolitic::CapitalLetterZhivete),
'Ⰷ' => Ok(Glagolitic::CapitalLetterDzelo),
'Ⰸ' => Ok(Glagolitic::CapitalLetterZemlja),
'Ⰹ' => Ok(Glagolitic::CapitalLetterIzhe),
'Ⰺ' => Ok(Glagolitic::CapitalLetterInitialIzhe),
'Ⰻ' => Ok(Glagolitic::CapitalLetterI),
'Ⰼ' => Ok(Glagolitic::CapitalLetterDjervi),
'Ⰽ' => Ok(Glagolitic::CapitalLetterKako),
'Ⰾ' => Ok(Glagolitic::CapitalLetterLjudije),
'Ⰿ' => Ok(Glagolitic::CapitalLetterMyslite),
'Ⱀ' => Ok(Glagolitic::CapitalLetterNashi),
'Ⱁ' => Ok(Glagolitic::CapitalLetterOnu),
'Ⱂ' => Ok(Glagolitic::CapitalLetterPokoji),
'Ⱃ' => Ok(Glagolitic::CapitalLetterRitsi),
'Ⱄ' => Ok(Glagolitic::CapitalLetterSlovo),
'Ⱅ' => Ok(Glagolitic::CapitalLetterTvrido),
'Ⱆ' => Ok(Glagolitic::CapitalLetterUku),
'Ⱇ' => Ok(Glagolitic::CapitalLetterFritu),
'Ⱈ' => Ok(Glagolitic::CapitalLetterHeru),
'Ⱉ' => Ok(Glagolitic::CapitalLetterOtu),
'Ⱊ' => Ok(Glagolitic::CapitalLetterPe),
'Ⱋ' => Ok(Glagolitic::CapitalLetterShta),
'Ⱌ' => Ok(Glagolitic::CapitalLetterTsi),
'Ⱍ' => Ok(Glagolitic::CapitalLetterChrivi),
'Ⱎ' => Ok(Glagolitic::CapitalLetterSha),
'Ⱏ' => Ok(Glagolitic::CapitalLetterYeru),
'Ⱐ' => Ok(Glagolitic::CapitalLetterYeri),
'Ⱑ' => Ok(Glagolitic::CapitalLetterYati),
'Ⱒ' => Ok(Glagolitic::CapitalLetterSpideryHa),
'Ⱓ' => Ok(Glagolitic::CapitalLetterYu),
'Ⱔ' => Ok(Glagolitic::CapitalLetterSmallYus),
'Ⱕ' => Ok(Glagolitic::CapitalLetterSmallYusWithTail),
'Ⱖ' => Ok(Glagolitic::CapitalLetterYo),
'Ⱗ' => Ok(Glagolitic::CapitalLetterIotatedSmallYus),
'Ⱘ' => Ok(Glagolitic::CapitalLetterBigYus),
'Ⱙ' => Ok(Glagolitic::CapitalLetterIotatedBigYus),
'Ⱚ' => Ok(Glagolitic::CapitalLetterFita),
'Ⱛ' => Ok(Glagolitic::CapitalLetterIzhitsa),
'Ⱜ' => Ok(Glagolitic::CapitalLetterShtapic),
'Ⱝ' => Ok(Glagolitic::CapitalLetterTrokutastiA),
'Ⱞ' => Ok(Glagolitic::CapitalLetterLatinateMyslite),
'ⰰ' => Ok(Glagolitic::SmallLetterAzu),
'ⰱ' => Ok(Glagolitic::SmallLetterBuky),
'ⰲ' => Ok(Glagolitic::SmallLetterVede),
'ⰳ' => Ok(Glagolitic::SmallLetterGlagoli),
'ⰴ' => Ok(Glagolitic::SmallLetterDobro),
'ⰵ' => Ok(Glagolitic::SmallLetterYestu),
'ⰶ' => Ok(Glagolitic::SmallLetterZhivete),
'ⰷ' => Ok(Glagolitic::SmallLetterDzelo),
'ⰸ' => Ok(Glagolitic::SmallLetterZemlja),
'ⰹ' => Ok(Glagolitic::SmallLetterIzhe),
'ⰺ' => Ok(Glagolitic::SmallLetterInitialIzhe),
'ⰻ' => Ok(Glagolitic::SmallLetterI),
'ⰼ' => Ok(Glagolitic::SmallLetterDjervi),
'ⰽ' => Ok(Glagolitic::SmallLetterKako),
'ⰾ' => Ok(Glagolitic::SmallLetterLjudije),
'ⰿ' => Ok(Glagolitic::SmallLetterMyslite),
'ⱀ' => Ok(Glagolitic::SmallLetterNashi),
'ⱁ' => Ok(Glagolitic::SmallLetterOnu),
'ⱂ' => Ok(Glagolitic::SmallLetterPokoji),
'ⱃ' => Ok(Glagolitic::SmallLetterRitsi),
'ⱄ' => Ok(Glagolitic::SmallLetterSlovo),
'ⱅ' => Ok(Glagolitic::SmallLetterTvrido),
'ⱆ' => Ok(Glagolitic::SmallLetterUku),
'ⱇ' => Ok(Glagolitic::SmallLetterFritu),
'ⱈ' => Ok(Glagolitic::SmallLetterHeru),
'ⱉ' => Ok(Glagolitic::SmallLetterOtu),
'ⱊ' => Ok(Glagolitic::SmallLetterPe),
'ⱋ' => Ok(Glagolitic::SmallLetterShta),
'ⱌ' => Ok(Glagolitic::SmallLetterTsi),
'ⱍ' => Ok(Glagolitic::SmallLetterChrivi),
'ⱎ' => Ok(Glagolitic::SmallLetterSha),
'ⱏ' => Ok(Glagolitic::SmallLetterYeru),
'ⱐ' => Ok(Glagolitic::SmallLetterYeri),
'ⱑ' => Ok(Glagolitic::SmallLetterYati),
'ⱒ' => Ok(Glagolitic::SmallLetterSpideryHa),
'ⱓ' => Ok(Glagolitic::SmallLetterYu),
'ⱔ' => Ok(Glagolitic::SmallLetterSmallYus),
'ⱕ' => Ok(Glagolitic::SmallLetterSmallYusWithTail),
'ⱖ' => Ok(Glagolitic::SmallLetterYo),
'ⱗ' => Ok(Glagolitic::SmallLetterIotatedSmallYus),
'ⱘ' => Ok(Glagolitic::SmallLetterBigYus),
'ⱙ' => Ok(Glagolitic::SmallLetterIotatedBigYus),
'ⱚ' => Ok(Glagolitic::SmallLetterFita),
'ⱛ' => Ok(Glagolitic::SmallLetterIzhitsa),
'ⱜ' => Ok(Glagolitic::SmallLetterShtapic),
'ⱝ' => Ok(Glagolitic::SmallLetterTrokutastiA),
'ⱞ' => Ok(Glagolitic::SmallLetterLatinateMyslite),
_ => Err(()),
}
}
}
impl Into<u32> for Glagolitic {
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 Glagolitic {
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 Glagolitic {
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 Glagolitic {
pub fn new() -> Self {
Glagolitic::CapitalLetterAzu
}
pub fn name(&self) -> String {
let s = std::format!("Glagolitic{:#?}", self);
string_morph::to_sentence_case(&s)
}
}