#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum CyrillicSupplement {
CyrillicCapitalLetterKomiDe,
CyrillicSmallLetterKomiDe,
CyrillicCapitalLetterKomiDje,
CyrillicSmallLetterKomiDje,
CyrillicCapitalLetterKomiZje,
CyrillicSmallLetterKomiZje,
CyrillicCapitalLetterKomiDzje,
CyrillicSmallLetterKomiDzje,
CyrillicCapitalLetterKomiLje,
CyrillicSmallLetterKomiLje,
CyrillicCapitalLetterKomiNje,
CyrillicSmallLetterKomiNje,
CyrillicCapitalLetterKomiSje,
CyrillicSmallLetterKomiSje,
CyrillicCapitalLetterKomiTje,
CyrillicSmallLetterKomiTje,
CyrillicCapitalLetterReversedZe,
CyrillicSmallLetterReversedZe,
CyrillicCapitalLetterElWithHook,
CyrillicSmallLetterElWithHook,
CyrillicCapitalLetterLha,
CyrillicSmallLetterLha,
CyrillicCapitalLetterRha,
CyrillicSmallLetterRha,
CyrillicCapitalLetterYae,
CyrillicSmallLetterYae,
CyrillicCapitalLetterQa,
CyrillicSmallLetterQa,
CyrillicCapitalLetterWe,
CyrillicSmallLetterWe,
CyrillicCapitalLetterAleutKa,
CyrillicSmallLetterAleutKa,
CyrillicCapitalLetterElWithMiddleHook,
CyrillicSmallLetterElWithMiddleHook,
CyrillicCapitalLetterEnWithMiddleHook,
CyrillicSmallLetterEnWithMiddleHook,
CyrillicCapitalLetterPeWithDescender,
CyrillicSmallLetterPeWithDescender,
CyrillicCapitalLetterShhaWithDescender,
CyrillicSmallLetterShhaWithDescender,
CyrillicCapitalLetterEnWithLeftHook,
CyrillicSmallLetterEnWithLeftHook,
CyrillicCapitalLetterDzzhe,
CyrillicSmallLetterDzzhe,
CyrillicCapitalLetterDche,
CyrillicSmallLetterDche,
CyrillicCapitalLetterElWithDescender,
}
impl Into<char> for CyrillicSupplement {
fn into(self) -> char {
match self {
CyrillicSupplement::CyrillicCapitalLetterKomiDe => 'Ԁ',
CyrillicSupplement::CyrillicSmallLetterKomiDe => 'ԁ',
CyrillicSupplement::CyrillicCapitalLetterKomiDje => 'Ԃ',
CyrillicSupplement::CyrillicSmallLetterKomiDje => 'ԃ',
CyrillicSupplement::CyrillicCapitalLetterKomiZje => 'Ԅ',
CyrillicSupplement::CyrillicSmallLetterKomiZje => 'ԅ',
CyrillicSupplement::CyrillicCapitalLetterKomiDzje => 'Ԇ',
CyrillicSupplement::CyrillicSmallLetterKomiDzje => 'ԇ',
CyrillicSupplement::CyrillicCapitalLetterKomiLje => 'Ԉ',
CyrillicSupplement::CyrillicSmallLetterKomiLje => 'ԉ',
CyrillicSupplement::CyrillicCapitalLetterKomiNje => 'Ԋ',
CyrillicSupplement::CyrillicSmallLetterKomiNje => 'ԋ',
CyrillicSupplement::CyrillicCapitalLetterKomiSje => 'Ԍ',
CyrillicSupplement::CyrillicSmallLetterKomiSje => 'ԍ',
CyrillicSupplement::CyrillicCapitalLetterKomiTje => 'Ԏ',
CyrillicSupplement::CyrillicSmallLetterKomiTje => 'ԏ',
CyrillicSupplement::CyrillicCapitalLetterReversedZe => 'Ԑ',
CyrillicSupplement::CyrillicSmallLetterReversedZe => 'ԑ',
CyrillicSupplement::CyrillicCapitalLetterElWithHook => 'Ԓ',
CyrillicSupplement::CyrillicSmallLetterElWithHook => 'ԓ',
CyrillicSupplement::CyrillicCapitalLetterLha => 'Ԕ',
CyrillicSupplement::CyrillicSmallLetterLha => 'ԕ',
CyrillicSupplement::CyrillicCapitalLetterRha => 'Ԗ',
CyrillicSupplement::CyrillicSmallLetterRha => 'ԗ',
CyrillicSupplement::CyrillicCapitalLetterYae => 'Ԙ',
CyrillicSupplement::CyrillicSmallLetterYae => 'ԙ',
CyrillicSupplement::CyrillicCapitalLetterQa => 'Ԛ',
CyrillicSupplement::CyrillicSmallLetterQa => 'ԛ',
CyrillicSupplement::CyrillicCapitalLetterWe => 'Ԝ',
CyrillicSupplement::CyrillicSmallLetterWe => 'ԝ',
CyrillicSupplement::CyrillicCapitalLetterAleutKa => 'Ԟ',
CyrillicSupplement::CyrillicSmallLetterAleutKa => 'ԟ',
CyrillicSupplement::CyrillicCapitalLetterElWithMiddleHook => 'Ԡ',
CyrillicSupplement::CyrillicSmallLetterElWithMiddleHook => 'ԡ',
CyrillicSupplement::CyrillicCapitalLetterEnWithMiddleHook => 'Ԣ',
CyrillicSupplement::CyrillicSmallLetterEnWithMiddleHook => 'ԣ',
CyrillicSupplement::CyrillicCapitalLetterPeWithDescender => 'Ԥ',
CyrillicSupplement::CyrillicSmallLetterPeWithDescender => 'ԥ',
CyrillicSupplement::CyrillicCapitalLetterShhaWithDescender => 'Ԧ',
CyrillicSupplement::CyrillicSmallLetterShhaWithDescender => 'ԧ',
CyrillicSupplement::CyrillicCapitalLetterEnWithLeftHook => 'Ԩ',
CyrillicSupplement::CyrillicSmallLetterEnWithLeftHook => 'ԩ',
CyrillicSupplement::CyrillicCapitalLetterDzzhe => 'Ԫ',
CyrillicSupplement::CyrillicSmallLetterDzzhe => 'ԫ',
CyrillicSupplement::CyrillicCapitalLetterDche => 'Ԭ',
CyrillicSupplement::CyrillicSmallLetterDche => 'ԭ',
CyrillicSupplement::CyrillicCapitalLetterElWithDescender => 'Ԯ',
}
}
}
impl std::convert::TryFrom<char> for CyrillicSupplement {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'Ԁ' => Ok(CyrillicSupplement::CyrillicCapitalLetterKomiDe),
'ԁ' => Ok(CyrillicSupplement::CyrillicSmallLetterKomiDe),
'Ԃ' => Ok(CyrillicSupplement::CyrillicCapitalLetterKomiDje),
'ԃ' => Ok(CyrillicSupplement::CyrillicSmallLetterKomiDje),
'Ԅ' => Ok(CyrillicSupplement::CyrillicCapitalLetterKomiZje),
'ԅ' => Ok(CyrillicSupplement::CyrillicSmallLetterKomiZje),
'Ԇ' => Ok(CyrillicSupplement::CyrillicCapitalLetterKomiDzje),
'ԇ' => Ok(CyrillicSupplement::CyrillicSmallLetterKomiDzje),
'Ԉ' => Ok(CyrillicSupplement::CyrillicCapitalLetterKomiLje),
'ԉ' => Ok(CyrillicSupplement::CyrillicSmallLetterKomiLje),
'Ԋ' => Ok(CyrillicSupplement::CyrillicCapitalLetterKomiNje),
'ԋ' => Ok(CyrillicSupplement::CyrillicSmallLetterKomiNje),
'Ԍ' => Ok(CyrillicSupplement::CyrillicCapitalLetterKomiSje),
'ԍ' => Ok(CyrillicSupplement::CyrillicSmallLetterKomiSje),
'Ԏ' => Ok(CyrillicSupplement::CyrillicCapitalLetterKomiTje),
'ԏ' => Ok(CyrillicSupplement::CyrillicSmallLetterKomiTje),
'Ԑ' => Ok(CyrillicSupplement::CyrillicCapitalLetterReversedZe),
'ԑ' => Ok(CyrillicSupplement::CyrillicSmallLetterReversedZe),
'Ԓ' => Ok(CyrillicSupplement::CyrillicCapitalLetterElWithHook),
'ԓ' => Ok(CyrillicSupplement::CyrillicSmallLetterElWithHook),
'Ԕ' => Ok(CyrillicSupplement::CyrillicCapitalLetterLha),
'ԕ' => Ok(CyrillicSupplement::CyrillicSmallLetterLha),
'Ԗ' => Ok(CyrillicSupplement::CyrillicCapitalLetterRha),
'ԗ' => Ok(CyrillicSupplement::CyrillicSmallLetterRha),
'Ԙ' => Ok(CyrillicSupplement::CyrillicCapitalLetterYae),
'ԙ' => Ok(CyrillicSupplement::CyrillicSmallLetterYae),
'Ԛ' => Ok(CyrillicSupplement::CyrillicCapitalLetterQa),
'ԛ' => Ok(CyrillicSupplement::CyrillicSmallLetterQa),
'Ԝ' => Ok(CyrillicSupplement::CyrillicCapitalLetterWe),
'ԝ' => Ok(CyrillicSupplement::CyrillicSmallLetterWe),
'Ԟ' => Ok(CyrillicSupplement::CyrillicCapitalLetterAleutKa),
'ԟ' => Ok(CyrillicSupplement::CyrillicSmallLetterAleutKa),
'Ԡ' => Ok(CyrillicSupplement::CyrillicCapitalLetterElWithMiddleHook),
'ԡ' => Ok(CyrillicSupplement::CyrillicSmallLetterElWithMiddleHook),
'Ԣ' => Ok(CyrillicSupplement::CyrillicCapitalLetterEnWithMiddleHook),
'ԣ' => Ok(CyrillicSupplement::CyrillicSmallLetterEnWithMiddleHook),
'Ԥ' => Ok(CyrillicSupplement::CyrillicCapitalLetterPeWithDescender),
'ԥ' => Ok(CyrillicSupplement::CyrillicSmallLetterPeWithDescender),
'Ԧ' => Ok(CyrillicSupplement::CyrillicCapitalLetterShhaWithDescender),
'ԧ' => Ok(CyrillicSupplement::CyrillicSmallLetterShhaWithDescender),
'Ԩ' => Ok(CyrillicSupplement::CyrillicCapitalLetterEnWithLeftHook),
'ԩ' => Ok(CyrillicSupplement::CyrillicSmallLetterEnWithLeftHook),
'Ԫ' => Ok(CyrillicSupplement::CyrillicCapitalLetterDzzhe),
'ԫ' => Ok(CyrillicSupplement::CyrillicSmallLetterDzzhe),
'Ԭ' => Ok(CyrillicSupplement::CyrillicCapitalLetterDche),
'ԭ' => Ok(CyrillicSupplement::CyrillicSmallLetterDche),
'Ԯ' => Ok(CyrillicSupplement::CyrillicCapitalLetterElWithDescender),
_ => Err(()),
}
}
}
impl Into<u32> for CyrillicSupplement {
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 CyrillicSupplement {
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 CyrillicSupplement {
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 CyrillicSupplement {
pub fn new() -> Self {
CyrillicSupplement::CyrillicCapitalLetterKomiDe
}
pub fn name(&self) -> String {
let s = std::format!("CyrillicSupplement{:#?}", self);
string_morph::to_sentence_case(&s)
}
}