#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum OldPermic {
LetterAn,
LetterBur,
LetterGai,
LetterDoi,
LetterE,
LetterZhoi,
LetterDzhoi,
LetterZata,
LetterDzita,
LetterI,
LetterKoke,
LetterLei,
LetterMenoe,
LetterNenoe,
LetterVooi,
LetterPeei,
LetterRei,
LetterSii,
LetterTai,
LetterU,
LetterChery,
LetterShooi,
LetterShchooi,
LetterYry,
LetterYeru,
LetterO,
LetterOo,
LetterEf,
LetterHa,
LetterTsiu,
LetterVer,
LetterYer,
LetterYeri,
LetterYat,
LetterIe,
LetterYu,
LetterYa,
LetterIa,
CombiningLetterAn,
CombiningLetterDoi,
CombiningLetterZata,
CombiningLetterNenoe,
CombiningLetterSii,
}
impl Into<char> for OldPermic {
fn into(self) -> char {
match self {
OldPermic::LetterAn => '𐍐',
OldPermic::LetterBur => '𐍑',
OldPermic::LetterGai => '𐍒',
OldPermic::LetterDoi => '𐍓',
OldPermic::LetterE => '𐍔',
OldPermic::LetterZhoi => '𐍕',
OldPermic::LetterDzhoi => '𐍖',
OldPermic::LetterZata => '𐍗',
OldPermic::LetterDzita => '𐍘',
OldPermic::LetterI => '𐍙',
OldPermic::LetterKoke => '𐍚',
OldPermic::LetterLei => '𐍛',
OldPermic::LetterMenoe => '𐍜',
OldPermic::LetterNenoe => '𐍝',
OldPermic::LetterVooi => '𐍞',
OldPermic::LetterPeei => '𐍟',
OldPermic::LetterRei => '𐍠',
OldPermic::LetterSii => '𐍡',
OldPermic::LetterTai => '𐍢',
OldPermic::LetterU => '𐍣',
OldPermic::LetterChery => '𐍤',
OldPermic::LetterShooi => '𐍥',
OldPermic::LetterShchooi => '𐍦',
OldPermic::LetterYry => '𐍧',
OldPermic::LetterYeru => '𐍨',
OldPermic::LetterO => '𐍩',
OldPermic::LetterOo => '𐍪',
OldPermic::LetterEf => '𐍫',
OldPermic::LetterHa => '𐍬',
OldPermic::LetterTsiu => '𐍭',
OldPermic::LetterVer => '𐍮',
OldPermic::LetterYer => '𐍯',
OldPermic::LetterYeri => '𐍰',
OldPermic::LetterYat => '𐍱',
OldPermic::LetterIe => '𐍲',
OldPermic::LetterYu => '𐍳',
OldPermic::LetterYa => '𐍴',
OldPermic::LetterIa => '𐍵',
OldPermic::CombiningLetterAn => '𐍶',
OldPermic::CombiningLetterDoi => '𐍷',
OldPermic::CombiningLetterZata => '𐍸',
OldPermic::CombiningLetterNenoe => '𐍹',
OldPermic::CombiningLetterSii => '𐍺',
}
}
}
impl std::convert::TryFrom<char> for OldPermic {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'𐍐' => Ok(OldPermic::LetterAn),
'𐍑' => Ok(OldPermic::LetterBur),
'𐍒' => Ok(OldPermic::LetterGai),
'𐍓' => Ok(OldPermic::LetterDoi),
'𐍔' => Ok(OldPermic::LetterE),
'𐍕' => Ok(OldPermic::LetterZhoi),
'𐍖' => Ok(OldPermic::LetterDzhoi),
'𐍗' => Ok(OldPermic::LetterZata),
'𐍘' => Ok(OldPermic::LetterDzita),
'𐍙' => Ok(OldPermic::LetterI),
'𐍚' => Ok(OldPermic::LetterKoke),
'𐍛' => Ok(OldPermic::LetterLei),
'𐍜' => Ok(OldPermic::LetterMenoe),
'𐍝' => Ok(OldPermic::LetterNenoe),
'𐍞' => Ok(OldPermic::LetterVooi),
'𐍟' => Ok(OldPermic::LetterPeei),
'𐍠' => Ok(OldPermic::LetterRei),
'𐍡' => Ok(OldPermic::LetterSii),
'𐍢' => Ok(OldPermic::LetterTai),
'𐍣' => Ok(OldPermic::LetterU),
'𐍤' => Ok(OldPermic::LetterChery),
'𐍥' => Ok(OldPermic::LetterShooi),
'𐍦' => Ok(OldPermic::LetterShchooi),
'𐍧' => Ok(OldPermic::LetterYry),
'𐍨' => Ok(OldPermic::LetterYeru),
'𐍩' => Ok(OldPermic::LetterO),
'𐍪' => Ok(OldPermic::LetterOo),
'𐍫' => Ok(OldPermic::LetterEf),
'𐍬' => Ok(OldPermic::LetterHa),
'𐍭' => Ok(OldPermic::LetterTsiu),
'𐍮' => Ok(OldPermic::LetterVer),
'𐍯' => Ok(OldPermic::LetterYer),
'𐍰' => Ok(OldPermic::LetterYeri),
'𐍱' => Ok(OldPermic::LetterYat),
'𐍲' => Ok(OldPermic::LetterIe),
'𐍳' => Ok(OldPermic::LetterYu),
'𐍴' => Ok(OldPermic::LetterYa),
'𐍵' => Ok(OldPermic::LetterIa),
'𐍶' => Ok(OldPermic::CombiningLetterAn),
'𐍷' => Ok(OldPermic::CombiningLetterDoi),
'𐍸' => Ok(OldPermic::CombiningLetterZata),
'𐍹' => Ok(OldPermic::CombiningLetterNenoe),
'𐍺' => Ok(OldPermic::CombiningLetterSii),
_ => Err(()),
}
}
}
impl Into<u32> for OldPermic {
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 OldPermic {
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 OldPermic {
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 OldPermic {
pub fn new() -> Self {
OldPermic::LetterAn
}
pub fn name(&self) -> String {
let s = std::format!("OldPermic{:#?}", self);
string_morph::to_sentence_case(&s)
}
}