mod constants {
pub const LETTER_YA: char = 'ⴰ';
pub const LETTER_YAB: char = 'ⴱ';
pub const LETTER_YABH: char = 'ⴲ';
pub const LETTER_YAG: char = 'ⴳ';
pub const LETTER_YAGHH: char = 'ⴴ';
pub const LETTER_BERBER_ACADEMY_YAJ: char = 'ⴵ';
pub const LETTER_YAJ: char = 'ⴶ';
pub const LETTER_YAD: char = 'ⴷ';
pub const LETTER_YADH: char = 'ⴸ';
pub const LETTER_YADD: char = 'ⴹ';
pub const LETTER_YADDH: char = 'ⴺ';
pub const LETTER_YEY: char = 'ⴻ';
pub const LETTER_YAF: char = 'ⴼ';
pub const LETTER_YAK: char = 'ⴽ';
pub const LETTER_TUAREG_YAK: char = 'ⴾ';
pub const LETTER_YAKHH: char = 'ⴿ';
pub const LETTER_YAH: char = 'ⵀ';
pub const LETTER_BERBER_ACADEMY_YAH: char = 'ⵁ';
pub const LETTER_TUAREG_YAH: char = 'ⵂ';
pub const LETTER_YAHH: char = 'ⵃ';
pub const LETTER_YAA: char = 'ⵄ';
pub const LETTER_YAKH: char = 'ⵅ';
pub const LETTER_TUAREG_YAKH: char = 'ⵆ';
pub const LETTER_YAQ: char = 'ⵇ';
pub const LETTER_TUAREG_YAQ: char = 'ⵈ';
pub const LETTER_YI: char = 'ⵉ';
pub const LETTER_YAZH: char = 'ⵊ';
pub const LETTER_AHAGGAR_YAZH: char = 'ⵋ';
pub const LETTER_TUAREG_YAZH: char = 'ⵌ';
pub const LETTER_YAL: char = 'ⵍ';
pub const LETTER_YAM: char = 'ⵎ';
pub const LETTER_YAN: char = 'ⵏ';
pub const LETTER_TUAREG_YAGN: char = 'ⵐ';
pub const LETTER_TUAREG_YANG: char = 'ⵑ';
pub const LETTER_YAP: char = 'ⵒ';
pub const LETTER_YU: char = 'ⵓ';
pub const LETTER_YAR: char = 'ⵔ';
pub const LETTER_YARR: char = 'ⵕ';
pub const LETTER_YAGH: char = 'ⵖ';
pub const LETTER_TUAREG_YAGH: char = 'ⵗ';
pub const LETTER_AYER_YAGH: char = 'ⵘ';
pub const LETTER_YAS: char = 'ⵙ';
pub const LETTER_YASS: char = 'ⵚ';
pub const LETTER_YASH: char = 'ⵛ';
pub const LETTER_YAT: char = 'ⵜ';
pub const LETTER_YATH: char = 'ⵝ';
pub const LETTER_YACH: char = 'ⵞ';
pub const LETTER_YATT: char = 'ⵟ';
pub const LETTER_YAV: char = 'ⵠ';
pub const LETTER_YAW: char = 'ⵡ';
pub const LETTER_YAY: char = 'ⵢ';
pub const LETTER_YAZ: char = 'ⵣ';
pub const LETTER_TAWELLEMET_YAZ: char = 'ⵤ';
pub const LETTER_YAZZ: char = 'ⵥ';
pub const LETTER_YE: char = 'ⵦ';
pub const LETTER_YO: char = 'ⵧ';
pub const MODIFIER_LETTER_LABIALIZATION_MARK: char = 'ⵯ';
pub const SEPARATOR_MARK: char = '⵰';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Tifinagh {
LetterYa,
LetterYab,
LetterYabh,
LetterYag,
LetterYaghh,
LetterBerberAcademyYaj,
LetterYaj,
LetterYad,
LetterYadh,
LetterYadd,
LetterYaddh,
LetterYey,
LetterYaf,
LetterYak,
LetterTuaregYak,
LetterYakhh,
LetterYah,
LetterBerberAcademyYah,
LetterTuaregYah,
LetterYahh,
LetterYaa,
LetterYakh,
LetterTuaregYakh,
LetterYaq,
LetterTuaregYaq,
LetterYi,
LetterYazh,
LetterAhaggarYazh,
LetterTuaregYazh,
LetterYal,
LetterYam,
LetterYan,
LetterTuaregYagn,
LetterTuaregYang,
LetterYap,
LetterYu,
LetterYar,
LetterYarr,
LetterYagh,
LetterTuaregYagh,
LetterAyerYagh,
LetterYas,
LetterYass,
LetterYash,
LetterYat,
LetterYath,
LetterYach,
LetterYatt,
LetterYav,
LetterYaw,
LetterYay,
LetterYaz,
LetterTawellemetYaz,
LetterYazz,
LetterYe,
LetterYo,
ModifierLetterLabializationMark,
SeparatorMark,
}
impl Into<char> for Tifinagh {
fn into(self) -> char {
use constants::*;
match self {
Tifinagh::LetterYa => LETTER_YA,
Tifinagh::LetterYab => LETTER_YAB,
Tifinagh::LetterYabh => LETTER_YABH,
Tifinagh::LetterYag => LETTER_YAG,
Tifinagh::LetterYaghh => LETTER_YAGHH,
Tifinagh::LetterBerberAcademyYaj => LETTER_BERBER_ACADEMY_YAJ,
Tifinagh::LetterYaj => LETTER_YAJ,
Tifinagh::LetterYad => LETTER_YAD,
Tifinagh::LetterYadh => LETTER_YADH,
Tifinagh::LetterYadd => LETTER_YADD,
Tifinagh::LetterYaddh => LETTER_YADDH,
Tifinagh::LetterYey => LETTER_YEY,
Tifinagh::LetterYaf => LETTER_YAF,
Tifinagh::LetterYak => LETTER_YAK,
Tifinagh::LetterTuaregYak => LETTER_TUAREG_YAK,
Tifinagh::LetterYakhh => LETTER_YAKHH,
Tifinagh::LetterYah => LETTER_YAH,
Tifinagh::LetterBerberAcademyYah => LETTER_BERBER_ACADEMY_YAH,
Tifinagh::LetterTuaregYah => LETTER_TUAREG_YAH,
Tifinagh::LetterYahh => LETTER_YAHH,
Tifinagh::LetterYaa => LETTER_YAA,
Tifinagh::LetterYakh => LETTER_YAKH,
Tifinagh::LetterTuaregYakh => LETTER_TUAREG_YAKH,
Tifinagh::LetterYaq => LETTER_YAQ,
Tifinagh::LetterTuaregYaq => LETTER_TUAREG_YAQ,
Tifinagh::LetterYi => LETTER_YI,
Tifinagh::LetterYazh => LETTER_YAZH,
Tifinagh::LetterAhaggarYazh => LETTER_AHAGGAR_YAZH,
Tifinagh::LetterTuaregYazh => LETTER_TUAREG_YAZH,
Tifinagh::LetterYal => LETTER_YAL,
Tifinagh::LetterYam => LETTER_YAM,
Tifinagh::LetterYan => LETTER_YAN,
Tifinagh::LetterTuaregYagn => LETTER_TUAREG_YAGN,
Tifinagh::LetterTuaregYang => LETTER_TUAREG_YANG,
Tifinagh::LetterYap => LETTER_YAP,
Tifinagh::LetterYu => LETTER_YU,
Tifinagh::LetterYar => LETTER_YAR,
Tifinagh::LetterYarr => LETTER_YARR,
Tifinagh::LetterYagh => LETTER_YAGH,
Tifinagh::LetterTuaregYagh => LETTER_TUAREG_YAGH,
Tifinagh::LetterAyerYagh => LETTER_AYER_YAGH,
Tifinagh::LetterYas => LETTER_YAS,
Tifinagh::LetterYass => LETTER_YASS,
Tifinagh::LetterYash => LETTER_YASH,
Tifinagh::LetterYat => LETTER_YAT,
Tifinagh::LetterYath => LETTER_YATH,
Tifinagh::LetterYach => LETTER_YACH,
Tifinagh::LetterYatt => LETTER_YATT,
Tifinagh::LetterYav => LETTER_YAV,
Tifinagh::LetterYaw => LETTER_YAW,
Tifinagh::LetterYay => LETTER_YAY,
Tifinagh::LetterYaz => LETTER_YAZ,
Tifinagh::LetterTawellemetYaz => LETTER_TAWELLEMET_YAZ,
Tifinagh::LetterYazz => LETTER_YAZZ,
Tifinagh::LetterYe => LETTER_YE,
Tifinagh::LetterYo => LETTER_YO,
Tifinagh::ModifierLetterLabializationMark => MODIFIER_LETTER_LABIALIZATION_MARK,
Tifinagh::SeparatorMark => SEPARATOR_MARK,
}
}
}
impl std::convert::TryFrom<char> for Tifinagh {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
LETTER_YA => Ok(Tifinagh::LetterYa),
LETTER_YAB => Ok(Tifinagh::LetterYab),
LETTER_YABH => Ok(Tifinagh::LetterYabh),
LETTER_YAG => Ok(Tifinagh::LetterYag),
LETTER_YAGHH => Ok(Tifinagh::LetterYaghh),
LETTER_BERBER_ACADEMY_YAJ => Ok(Tifinagh::LetterBerberAcademyYaj),
LETTER_YAJ => Ok(Tifinagh::LetterYaj),
LETTER_YAD => Ok(Tifinagh::LetterYad),
LETTER_YADH => Ok(Tifinagh::LetterYadh),
LETTER_YADD => Ok(Tifinagh::LetterYadd),
LETTER_YADDH => Ok(Tifinagh::LetterYaddh),
LETTER_YEY => Ok(Tifinagh::LetterYey),
LETTER_YAF => Ok(Tifinagh::LetterYaf),
LETTER_YAK => Ok(Tifinagh::LetterYak),
LETTER_TUAREG_YAK => Ok(Tifinagh::LetterTuaregYak),
LETTER_YAKHH => Ok(Tifinagh::LetterYakhh),
LETTER_YAH => Ok(Tifinagh::LetterYah),
LETTER_BERBER_ACADEMY_YAH => Ok(Tifinagh::LetterBerberAcademyYah),
LETTER_TUAREG_YAH => Ok(Tifinagh::LetterTuaregYah),
LETTER_YAHH => Ok(Tifinagh::LetterYahh),
LETTER_YAA => Ok(Tifinagh::LetterYaa),
LETTER_YAKH => Ok(Tifinagh::LetterYakh),
LETTER_TUAREG_YAKH => Ok(Tifinagh::LetterTuaregYakh),
LETTER_YAQ => Ok(Tifinagh::LetterYaq),
LETTER_TUAREG_YAQ => Ok(Tifinagh::LetterTuaregYaq),
LETTER_YI => Ok(Tifinagh::LetterYi),
LETTER_YAZH => Ok(Tifinagh::LetterYazh),
LETTER_AHAGGAR_YAZH => Ok(Tifinagh::LetterAhaggarYazh),
LETTER_TUAREG_YAZH => Ok(Tifinagh::LetterTuaregYazh),
LETTER_YAL => Ok(Tifinagh::LetterYal),
LETTER_YAM => Ok(Tifinagh::LetterYam),
LETTER_YAN => Ok(Tifinagh::LetterYan),
LETTER_TUAREG_YAGN => Ok(Tifinagh::LetterTuaregYagn),
LETTER_TUAREG_YANG => Ok(Tifinagh::LetterTuaregYang),
LETTER_YAP => Ok(Tifinagh::LetterYap),
LETTER_YU => Ok(Tifinagh::LetterYu),
LETTER_YAR => Ok(Tifinagh::LetterYar),
LETTER_YARR => Ok(Tifinagh::LetterYarr),
LETTER_YAGH => Ok(Tifinagh::LetterYagh),
LETTER_TUAREG_YAGH => Ok(Tifinagh::LetterTuaregYagh),
LETTER_AYER_YAGH => Ok(Tifinagh::LetterAyerYagh),
LETTER_YAS => Ok(Tifinagh::LetterYas),
LETTER_YASS => Ok(Tifinagh::LetterYass),
LETTER_YASH => Ok(Tifinagh::LetterYash),
LETTER_YAT => Ok(Tifinagh::LetterYat),
LETTER_YATH => Ok(Tifinagh::LetterYath),
LETTER_YACH => Ok(Tifinagh::LetterYach),
LETTER_YATT => Ok(Tifinagh::LetterYatt),
LETTER_YAV => Ok(Tifinagh::LetterYav),
LETTER_YAW => Ok(Tifinagh::LetterYaw),
LETTER_YAY => Ok(Tifinagh::LetterYay),
LETTER_YAZ => Ok(Tifinagh::LetterYaz),
LETTER_TAWELLEMET_YAZ => Ok(Tifinagh::LetterTawellemetYaz),
LETTER_YAZZ => Ok(Tifinagh::LetterYazz),
LETTER_YE => Ok(Tifinagh::LetterYe),
LETTER_YO => Ok(Tifinagh::LetterYo),
MODIFIER_LETTER_LABIALIZATION_MARK => Ok(Tifinagh::ModifierLetterLabializationMark),
SEPARATOR_MARK => Ok(Tifinagh::SeparatorMark),
_ => Err(()),
}
}
}
impl Into<u32> for Tifinagh {
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 Tifinagh {
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 Tifinagh {
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 Tifinagh {
pub fn new() -> Self {
Tifinagh::LetterYa
}
pub fn name(&self) -> &str {
match self {
Tifinagh::LetterYa => "tifinagh letter ya",
Tifinagh::LetterYab => "tifinagh letter yab",
Tifinagh::LetterYabh => "tifinagh letter yabh",
Tifinagh::LetterYag => "tifinagh letter yag",
Tifinagh::LetterYaghh => "tifinagh letter yaghh",
Tifinagh::LetterBerberAcademyYaj => "tifinagh letter berber academy yaj",
Tifinagh::LetterYaj => "tifinagh letter yaj",
Tifinagh::LetterYad => "tifinagh letter yad",
Tifinagh::LetterYadh => "tifinagh letter yadh",
Tifinagh::LetterYadd => "tifinagh letter yadd",
Tifinagh::LetterYaddh => "tifinagh letter yaddh",
Tifinagh::LetterYey => "tifinagh letter yey",
Tifinagh::LetterYaf => "tifinagh letter yaf",
Tifinagh::LetterYak => "tifinagh letter yak",
Tifinagh::LetterTuaregYak => "tifinagh letter tuareg yak",
Tifinagh::LetterYakhh => "tifinagh letter yakhh",
Tifinagh::LetterYah => "tifinagh letter yah",
Tifinagh::LetterBerberAcademyYah => "tifinagh letter berber academy yah",
Tifinagh::LetterTuaregYah => "tifinagh letter tuareg yah",
Tifinagh::LetterYahh => "tifinagh letter yahh",
Tifinagh::LetterYaa => "tifinagh letter yaa",
Tifinagh::LetterYakh => "tifinagh letter yakh",
Tifinagh::LetterTuaregYakh => "tifinagh letter tuareg yakh",
Tifinagh::LetterYaq => "tifinagh letter yaq",
Tifinagh::LetterTuaregYaq => "tifinagh letter tuareg yaq",
Tifinagh::LetterYi => "tifinagh letter yi",
Tifinagh::LetterYazh => "tifinagh letter yazh",
Tifinagh::LetterAhaggarYazh => "tifinagh letter ahaggar yazh",
Tifinagh::LetterTuaregYazh => "tifinagh letter tuareg yazh",
Tifinagh::LetterYal => "tifinagh letter yal",
Tifinagh::LetterYam => "tifinagh letter yam",
Tifinagh::LetterYan => "tifinagh letter yan",
Tifinagh::LetterTuaregYagn => "tifinagh letter tuareg yagn",
Tifinagh::LetterTuaregYang => "tifinagh letter tuareg yang",
Tifinagh::LetterYap => "tifinagh letter yap",
Tifinagh::LetterYu => "tifinagh letter yu",
Tifinagh::LetterYar => "tifinagh letter yar",
Tifinagh::LetterYarr => "tifinagh letter yarr",
Tifinagh::LetterYagh => "tifinagh letter yagh",
Tifinagh::LetterTuaregYagh => "tifinagh letter tuareg yagh",
Tifinagh::LetterAyerYagh => "tifinagh letter ayer yagh",
Tifinagh::LetterYas => "tifinagh letter yas",
Tifinagh::LetterYass => "tifinagh letter yass",
Tifinagh::LetterYash => "tifinagh letter yash",
Tifinagh::LetterYat => "tifinagh letter yat",
Tifinagh::LetterYath => "tifinagh letter yath",
Tifinagh::LetterYach => "tifinagh letter yach",
Tifinagh::LetterYatt => "tifinagh letter yatt",
Tifinagh::LetterYav => "tifinagh letter yav",
Tifinagh::LetterYaw => "tifinagh letter yaw",
Tifinagh::LetterYay => "tifinagh letter yay",
Tifinagh::LetterYaz => "tifinagh letter yaz",
Tifinagh::LetterTawellemetYaz => "tifinagh letter tawellemet yaz",
Tifinagh::LetterYazz => "tifinagh letter yazz",
Tifinagh::LetterYe => "tifinagh letter ye",
Tifinagh::LetterYo => "tifinagh letter yo",
Tifinagh::ModifierLetterLabializationMark => "tifinagh modifier letter labialization mark",
Tifinagh::SeparatorMark => "tifinagh separator mark",
}
}
}