mod constants {
pub const LETTER_AN: char = '𐍐';
pub const LETTER_BUR: char = '𐍑';
pub const LETTER_GAI: char = '𐍒';
pub const LETTER_DOI: char = '𐍓';
pub const LETTER_E: char = '𐍔';
pub const LETTER_ZHOI: char = '𐍕';
pub const LETTER_DZHOI: char = '𐍖';
pub const LETTER_ZATA: char = '𐍗';
pub const LETTER_DZITA: char = '𐍘';
pub const LETTER_I: char = '𐍙';
pub const LETTER_KOKE: char = '𐍚';
pub const LETTER_LEI: char = '𐍛';
pub const LETTER_MENOE: char = '𐍜';
pub const LETTER_NENOE: char = '𐍝';
pub const LETTER_VOOI: char = '𐍞';
pub const LETTER_PEEI: char = '𐍟';
pub const LETTER_REI: char = '𐍠';
pub const LETTER_SII: char = '𐍡';
pub const LETTER_TAI: char = '𐍢';
pub const LETTER_U: char = '𐍣';
pub const LETTER_CHERY: char = '𐍤';
pub const LETTER_SHOOI: char = '𐍥';
pub const LETTER_SHCHOOI: char = '𐍦';
pub const LETTER_YRY: char = '𐍧';
pub const LETTER_YERU: char = '𐍨';
pub const LETTER_O: char = '𐍩';
pub const LETTER_OO: char = '𐍪';
pub const LETTER_EF: char = '𐍫';
pub const LETTER_HA: char = '𐍬';
pub const LETTER_TSIU: char = '𐍭';
pub const LETTER_VER: char = '𐍮';
pub const LETTER_YER: char = '𐍯';
pub const LETTER_YERI: char = '𐍰';
pub const LETTER_YAT: char = '𐍱';
pub const LETTER_IE: char = '𐍲';
pub const LETTER_YU: char = '𐍳';
pub const LETTER_YA: char = '𐍴';
pub const LETTER_IA: char = '𐍵';
pub const COMBINING_LETTER_AN: char = '𐍶';
pub const COMBINING_LETTER_DOI: char = '𐍷';
pub const COMBINING_LETTER_ZATA: char = '𐍸';
pub const COMBINING_LETTER_NENOE: char = '𐍹';
pub const COMBINING_LETTER_SII: char = '𐍺';
}
#[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 {
use constants::*;
match self {
OldPermic::LetterAn => LETTER_AN,
OldPermic::LetterBur => LETTER_BUR,
OldPermic::LetterGai => LETTER_GAI,
OldPermic::LetterDoi => LETTER_DOI,
OldPermic::LetterE => LETTER_E,
OldPermic::LetterZhoi => LETTER_ZHOI,
OldPermic::LetterDzhoi => LETTER_DZHOI,
OldPermic::LetterZata => LETTER_ZATA,
OldPermic::LetterDzita => LETTER_DZITA,
OldPermic::LetterI => LETTER_I,
OldPermic::LetterKoke => LETTER_KOKE,
OldPermic::LetterLei => LETTER_LEI,
OldPermic::LetterMenoe => LETTER_MENOE,
OldPermic::LetterNenoe => LETTER_NENOE,
OldPermic::LetterVooi => LETTER_VOOI,
OldPermic::LetterPeei => LETTER_PEEI,
OldPermic::LetterRei => LETTER_REI,
OldPermic::LetterSii => LETTER_SII,
OldPermic::LetterTai => LETTER_TAI,
OldPermic::LetterU => LETTER_U,
OldPermic::LetterChery => LETTER_CHERY,
OldPermic::LetterShooi => LETTER_SHOOI,
OldPermic::LetterShchooi => LETTER_SHCHOOI,
OldPermic::LetterYry => LETTER_YRY,
OldPermic::LetterYeru => LETTER_YERU,
OldPermic::LetterO => LETTER_O,
OldPermic::LetterOo => LETTER_OO,
OldPermic::LetterEf => LETTER_EF,
OldPermic::LetterHa => LETTER_HA,
OldPermic::LetterTsiu => LETTER_TSIU,
OldPermic::LetterVer => LETTER_VER,
OldPermic::LetterYer => LETTER_YER,
OldPermic::LetterYeri => LETTER_YERI,
OldPermic::LetterYat => LETTER_YAT,
OldPermic::LetterIe => LETTER_IE,
OldPermic::LetterYu => LETTER_YU,
OldPermic::LetterYa => LETTER_YA,
OldPermic::LetterIa => LETTER_IA,
OldPermic::CombiningLetterAn => COMBINING_LETTER_AN,
OldPermic::CombiningLetterDoi => COMBINING_LETTER_DOI,
OldPermic::CombiningLetterZata => COMBINING_LETTER_ZATA,
OldPermic::CombiningLetterNenoe => COMBINING_LETTER_NENOE,
OldPermic::CombiningLetterSii => COMBINING_LETTER_SII,
}
}
}
impl std::convert::TryFrom<char> for OldPermic {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
LETTER_AN => Ok(OldPermic::LetterAn),
LETTER_BUR => Ok(OldPermic::LetterBur),
LETTER_GAI => Ok(OldPermic::LetterGai),
LETTER_DOI => Ok(OldPermic::LetterDoi),
LETTER_E => Ok(OldPermic::LetterE),
LETTER_ZHOI => Ok(OldPermic::LetterZhoi),
LETTER_DZHOI => Ok(OldPermic::LetterDzhoi),
LETTER_ZATA => Ok(OldPermic::LetterZata),
LETTER_DZITA => Ok(OldPermic::LetterDzita),
LETTER_I => Ok(OldPermic::LetterI),
LETTER_KOKE => Ok(OldPermic::LetterKoke),
LETTER_LEI => Ok(OldPermic::LetterLei),
LETTER_MENOE => Ok(OldPermic::LetterMenoe),
LETTER_NENOE => Ok(OldPermic::LetterNenoe),
LETTER_VOOI => Ok(OldPermic::LetterVooi),
LETTER_PEEI => Ok(OldPermic::LetterPeei),
LETTER_REI => Ok(OldPermic::LetterRei),
LETTER_SII => Ok(OldPermic::LetterSii),
LETTER_TAI => Ok(OldPermic::LetterTai),
LETTER_U => Ok(OldPermic::LetterU),
LETTER_CHERY => Ok(OldPermic::LetterChery),
LETTER_SHOOI => Ok(OldPermic::LetterShooi),
LETTER_SHCHOOI => Ok(OldPermic::LetterShchooi),
LETTER_YRY => Ok(OldPermic::LetterYry),
LETTER_YERU => Ok(OldPermic::LetterYeru),
LETTER_O => Ok(OldPermic::LetterO),
LETTER_OO => Ok(OldPermic::LetterOo),
LETTER_EF => Ok(OldPermic::LetterEf),
LETTER_HA => Ok(OldPermic::LetterHa),
LETTER_TSIU => Ok(OldPermic::LetterTsiu),
LETTER_VER => Ok(OldPermic::LetterVer),
LETTER_YER => Ok(OldPermic::LetterYer),
LETTER_YERI => Ok(OldPermic::LetterYeri),
LETTER_YAT => Ok(OldPermic::LetterYat),
LETTER_IE => Ok(OldPermic::LetterIe),
LETTER_YU => Ok(OldPermic::LetterYu),
LETTER_YA => Ok(OldPermic::LetterYa),
LETTER_IA => Ok(OldPermic::LetterIa),
COMBINING_LETTER_AN => Ok(OldPermic::CombiningLetterAn),
COMBINING_LETTER_DOI => Ok(OldPermic::CombiningLetterDoi),
COMBINING_LETTER_ZATA => Ok(OldPermic::CombiningLetterZata),
COMBINING_LETTER_NENOE => Ok(OldPermic::CombiningLetterNenoe),
COMBINING_LETTER_SII => 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) -> &str {
match self {
OldPermic::LetterAn => "old permic letter an",
OldPermic::LetterBur => "old permic letter bur",
OldPermic::LetterGai => "old permic letter gai",
OldPermic::LetterDoi => "old permic letter doi",
OldPermic::LetterE => "old permic letter e",
OldPermic::LetterZhoi => "old permic letter zhoi",
OldPermic::LetterDzhoi => "old permic letter dzhoi",
OldPermic::LetterZata => "old permic letter zata",
OldPermic::LetterDzita => "old permic letter dzita",
OldPermic::LetterI => "old permic letter i",
OldPermic::LetterKoke => "old permic letter koke",
OldPermic::LetterLei => "old permic letter lei",
OldPermic::LetterMenoe => "old permic letter menoe",
OldPermic::LetterNenoe => "old permic letter nenoe",
OldPermic::LetterVooi => "old permic letter vooi",
OldPermic::LetterPeei => "old permic letter peei",
OldPermic::LetterRei => "old permic letter rei",
OldPermic::LetterSii => "old permic letter sii",
OldPermic::LetterTai => "old permic letter tai",
OldPermic::LetterU => "old permic letter u",
OldPermic::LetterChery => "old permic letter chery",
OldPermic::LetterShooi => "old permic letter shooi",
OldPermic::LetterShchooi => "old permic letter shchooi",
OldPermic::LetterYry => "old permic letter yry",
OldPermic::LetterYeru => "old permic letter yeru",
OldPermic::LetterO => "old permic letter o",
OldPermic::LetterOo => "old permic letter oo",
OldPermic::LetterEf => "old permic letter ef",
OldPermic::LetterHa => "old permic letter ha",
OldPermic::LetterTsiu => "old permic letter tsiu",
OldPermic::LetterVer => "old permic letter ver",
OldPermic::LetterYer => "old permic letter yer",
OldPermic::LetterYeri => "old permic letter yeri",
OldPermic::LetterYat => "old permic letter yat",
OldPermic::LetterIe => "old permic letter ie",
OldPermic::LetterYu => "old permic letter yu",
OldPermic::LetterYa => "old permic letter ya",
OldPermic::LetterIa => "old permic letter ia",
OldPermic::CombiningLetterAn => "combining old permic letter an",
OldPermic::CombiningLetterDoi => "combining old permic letter doi",
OldPermic::CombiningLetterZata => "combining old permic letter zata",
OldPermic::CombiningLetterNenoe => "combining old permic letter nenoe",
OldPermic::CombiningLetterSii => "combining old permic letter sii",
}
}
}