#[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 {
match self {
Tifinagh::LetterYa => 'ⴰ',
Tifinagh::LetterYab => 'ⴱ',
Tifinagh::LetterYabh => 'ⴲ',
Tifinagh::LetterYag => 'ⴳ',
Tifinagh::LetterYaghh => 'ⴴ',
Tifinagh::LetterBerberAcademyYaj => 'ⴵ',
Tifinagh::LetterYaj => 'ⴶ',
Tifinagh::LetterYad => 'ⴷ',
Tifinagh::LetterYadh => 'ⴸ',
Tifinagh::LetterYadd => 'ⴹ',
Tifinagh::LetterYaddh => 'ⴺ',
Tifinagh::LetterYey => 'ⴻ',
Tifinagh::LetterYaf => 'ⴼ',
Tifinagh::LetterYak => 'ⴽ',
Tifinagh::LetterTuaregYak => 'ⴾ',
Tifinagh::LetterYakhh => 'ⴿ',
Tifinagh::LetterYah => 'ⵀ',
Tifinagh::LetterBerberAcademyYah => 'ⵁ',
Tifinagh::LetterTuaregYah => 'ⵂ',
Tifinagh::LetterYahh => 'ⵃ',
Tifinagh::LetterYaa => 'ⵄ',
Tifinagh::LetterYakh => 'ⵅ',
Tifinagh::LetterTuaregYakh => 'ⵆ',
Tifinagh::LetterYaq => 'ⵇ',
Tifinagh::LetterTuaregYaq => 'ⵈ',
Tifinagh::LetterYi => 'ⵉ',
Tifinagh::LetterYazh => 'ⵊ',
Tifinagh::LetterAhaggarYazh => 'ⵋ',
Tifinagh::LetterTuaregYazh => 'ⵌ',
Tifinagh::LetterYal => 'ⵍ',
Tifinagh::LetterYam => 'ⵎ',
Tifinagh::LetterYan => 'ⵏ',
Tifinagh::LetterTuaregYagn => 'ⵐ',
Tifinagh::LetterTuaregYang => 'ⵑ',
Tifinagh::LetterYap => 'ⵒ',
Tifinagh::LetterYu => 'ⵓ',
Tifinagh::LetterYar => 'ⵔ',
Tifinagh::LetterYarr => 'ⵕ',
Tifinagh::LetterYagh => 'ⵖ',
Tifinagh::LetterTuaregYagh => 'ⵗ',
Tifinagh::LetterAyerYagh => 'ⵘ',
Tifinagh::LetterYas => 'ⵙ',
Tifinagh::LetterYass => 'ⵚ',
Tifinagh::LetterYash => 'ⵛ',
Tifinagh::LetterYat => 'ⵜ',
Tifinagh::LetterYath => 'ⵝ',
Tifinagh::LetterYach => 'ⵞ',
Tifinagh::LetterYatt => 'ⵟ',
Tifinagh::LetterYav => 'ⵠ',
Tifinagh::LetterYaw => 'ⵡ',
Tifinagh::LetterYay => 'ⵢ',
Tifinagh::LetterYaz => 'ⵣ',
Tifinagh::LetterTawellemetYaz => 'ⵤ',
Tifinagh::LetterYazz => 'ⵥ',
Tifinagh::LetterYe => 'ⵦ',
Tifinagh::LetterYo => 'ⵧ',
Tifinagh::ModifierLetterLabializationMark => 'ⵯ',
Tifinagh::SeparatorMark => '⵰',
}
}
}
impl std::convert::TryFrom<char> for Tifinagh {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'ⴰ' => Ok(Tifinagh::LetterYa),
'ⴱ' => Ok(Tifinagh::LetterYab),
'ⴲ' => Ok(Tifinagh::LetterYabh),
'ⴳ' => Ok(Tifinagh::LetterYag),
'ⴴ' => Ok(Tifinagh::LetterYaghh),
'ⴵ' => Ok(Tifinagh::LetterBerberAcademyYaj),
'ⴶ' => Ok(Tifinagh::LetterYaj),
'ⴷ' => Ok(Tifinagh::LetterYad),
'ⴸ' => Ok(Tifinagh::LetterYadh),
'ⴹ' => Ok(Tifinagh::LetterYadd),
'ⴺ' => Ok(Tifinagh::LetterYaddh),
'ⴻ' => Ok(Tifinagh::LetterYey),
'ⴼ' => Ok(Tifinagh::LetterYaf),
'ⴽ' => Ok(Tifinagh::LetterYak),
'ⴾ' => Ok(Tifinagh::LetterTuaregYak),
'ⴿ' => Ok(Tifinagh::LetterYakhh),
'ⵀ' => Ok(Tifinagh::LetterYah),
'ⵁ' => Ok(Tifinagh::LetterBerberAcademyYah),
'ⵂ' => Ok(Tifinagh::LetterTuaregYah),
'ⵃ' => Ok(Tifinagh::LetterYahh),
'ⵄ' => Ok(Tifinagh::LetterYaa),
'ⵅ' => Ok(Tifinagh::LetterYakh),
'ⵆ' => Ok(Tifinagh::LetterTuaregYakh),
'ⵇ' => Ok(Tifinagh::LetterYaq),
'ⵈ' => Ok(Tifinagh::LetterTuaregYaq),
'ⵉ' => Ok(Tifinagh::LetterYi),
'ⵊ' => Ok(Tifinagh::LetterYazh),
'ⵋ' => Ok(Tifinagh::LetterAhaggarYazh),
'ⵌ' => Ok(Tifinagh::LetterTuaregYazh),
'ⵍ' => Ok(Tifinagh::LetterYal),
'ⵎ' => Ok(Tifinagh::LetterYam),
'ⵏ' => Ok(Tifinagh::LetterYan),
'ⵐ' => Ok(Tifinagh::LetterTuaregYagn),
'ⵑ' => Ok(Tifinagh::LetterTuaregYang),
'ⵒ' => Ok(Tifinagh::LetterYap),
'ⵓ' => Ok(Tifinagh::LetterYu),
'ⵔ' => Ok(Tifinagh::LetterYar),
'ⵕ' => Ok(Tifinagh::LetterYarr),
'ⵖ' => Ok(Tifinagh::LetterYagh),
'ⵗ' => Ok(Tifinagh::LetterTuaregYagh),
'ⵘ' => Ok(Tifinagh::LetterAyerYagh),
'ⵙ' => Ok(Tifinagh::LetterYas),
'ⵚ' => Ok(Tifinagh::LetterYass),
'ⵛ' => Ok(Tifinagh::LetterYash),
'ⵜ' => Ok(Tifinagh::LetterYat),
'ⵝ' => Ok(Tifinagh::LetterYath),
'ⵞ' => Ok(Tifinagh::LetterYach),
'ⵟ' => Ok(Tifinagh::LetterYatt),
'ⵠ' => Ok(Tifinagh::LetterYav),
'ⵡ' => Ok(Tifinagh::LetterYaw),
'ⵢ' => Ok(Tifinagh::LetterYay),
'ⵣ' => Ok(Tifinagh::LetterYaz),
'ⵤ' => Ok(Tifinagh::LetterTawellemetYaz),
'ⵥ' => Ok(Tifinagh::LetterYazz),
'ⵦ' => Ok(Tifinagh::LetterYe),
'ⵧ' => Ok(Tifinagh::LetterYo),
'ⵯ' => Ok(Tifinagh::ModifierLetterLabializationMark),
'⵰' => 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) -> String {
let s = std::format!("Tifinagh{:#?}", self);
string_morph::to_sentence_case(&s)
}
}