#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum MeeteiMayek {
LetterKok,
LetterSam,
LetterLai,
LetterMit,
LetterPa,
LetterNa,
LetterChil,
LetterTil,
LetterKhou,
LetterNgou,
LetterThou,
LetterWai,
LetterYang,
LetterHuk,
LetterUn,
LetterI,
LetterPham,
LetterAtiya,
LetterGok,
LetterJham,
LetterRai,
LetterBa,
LetterJil,
LetterDil,
LetterGhou,
LetterDhou,
LetterBham,
LetterKokLonsum,
LetterLaiLonsum,
LetterMitLonsum,
LetterPaLonsum,
LetterNaLonsum,
LetterTilLonsum,
LetterNgouLonsum,
LetterILonsum,
VowelSignOnap,
VowelSignInap,
VowelSignAnap,
VowelSignYenap,
VowelSignSounap,
VowelSignUnap,
VowelSignCheinap,
VowelSignNung,
Cheikhei,
LumIyek,
ApunIyek,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
}
impl Into<char> for MeeteiMayek {
fn into(self) -> char {
match self {
MeeteiMayek::LetterKok => 'ꯀ',
MeeteiMayek::LetterSam => 'ꯁ',
MeeteiMayek::LetterLai => 'ꯂ',
MeeteiMayek::LetterMit => 'ꯃ',
MeeteiMayek::LetterPa => 'ꯄ',
MeeteiMayek::LetterNa => 'ꯅ',
MeeteiMayek::LetterChil => 'ꯆ',
MeeteiMayek::LetterTil => 'ꯇ',
MeeteiMayek::LetterKhou => 'ꯈ',
MeeteiMayek::LetterNgou => 'ꯉ',
MeeteiMayek::LetterThou => 'ꯊ',
MeeteiMayek::LetterWai => 'ꯋ',
MeeteiMayek::LetterYang => 'ꯌ',
MeeteiMayek::LetterHuk => 'ꯍ',
MeeteiMayek::LetterUn => 'ꯎ',
MeeteiMayek::LetterI => 'ꯏ',
MeeteiMayek::LetterPham => 'ꯐ',
MeeteiMayek::LetterAtiya => 'ꯑ',
MeeteiMayek::LetterGok => 'ꯒ',
MeeteiMayek::LetterJham => 'ꯓ',
MeeteiMayek::LetterRai => 'ꯔ',
MeeteiMayek::LetterBa => 'ꯕ',
MeeteiMayek::LetterJil => 'ꯖ',
MeeteiMayek::LetterDil => 'ꯗ',
MeeteiMayek::LetterGhou => 'ꯘ',
MeeteiMayek::LetterDhou => 'ꯙ',
MeeteiMayek::LetterBham => 'ꯚ',
MeeteiMayek::LetterKokLonsum => 'ꯛ',
MeeteiMayek::LetterLaiLonsum => 'ꯜ',
MeeteiMayek::LetterMitLonsum => 'ꯝ',
MeeteiMayek::LetterPaLonsum => 'ꯞ',
MeeteiMayek::LetterNaLonsum => 'ꯟ',
MeeteiMayek::LetterTilLonsum => 'ꯠ',
MeeteiMayek::LetterNgouLonsum => 'ꯡ',
MeeteiMayek::LetterILonsum => 'ꯢ',
MeeteiMayek::VowelSignOnap => 'ꯣ',
MeeteiMayek::VowelSignInap => 'ꯤ',
MeeteiMayek::VowelSignAnap => 'ꯥ',
MeeteiMayek::VowelSignYenap => 'ꯦ',
MeeteiMayek::VowelSignSounap => 'ꯧ',
MeeteiMayek::VowelSignUnap => 'ꯨ',
MeeteiMayek::VowelSignCheinap => 'ꯩ',
MeeteiMayek::VowelSignNung => 'ꯪ',
MeeteiMayek::Cheikhei => '꯫',
MeeteiMayek::LumIyek => '꯬',
MeeteiMayek::ApunIyek => '꯭',
MeeteiMayek::DigitZero => '꯰',
MeeteiMayek::DigitOne => '꯱',
MeeteiMayek::DigitTwo => '꯲',
MeeteiMayek::DigitThree => '꯳',
MeeteiMayek::DigitFour => '꯴',
MeeteiMayek::DigitFive => '꯵',
MeeteiMayek::DigitSix => '꯶',
MeeteiMayek::DigitSeven => '꯷',
MeeteiMayek::DigitEight => '꯸',
MeeteiMayek::DigitNine => '꯹',
}
}
}
impl std::convert::TryFrom<char> for MeeteiMayek {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'ꯀ' => Ok(MeeteiMayek::LetterKok),
'ꯁ' => Ok(MeeteiMayek::LetterSam),
'ꯂ' => Ok(MeeteiMayek::LetterLai),
'ꯃ' => Ok(MeeteiMayek::LetterMit),
'ꯄ' => Ok(MeeteiMayek::LetterPa),
'ꯅ' => Ok(MeeteiMayek::LetterNa),
'ꯆ' => Ok(MeeteiMayek::LetterChil),
'ꯇ' => Ok(MeeteiMayek::LetterTil),
'ꯈ' => Ok(MeeteiMayek::LetterKhou),
'ꯉ' => Ok(MeeteiMayek::LetterNgou),
'ꯊ' => Ok(MeeteiMayek::LetterThou),
'ꯋ' => Ok(MeeteiMayek::LetterWai),
'ꯌ' => Ok(MeeteiMayek::LetterYang),
'ꯍ' => Ok(MeeteiMayek::LetterHuk),
'ꯎ' => Ok(MeeteiMayek::LetterUn),
'ꯏ' => Ok(MeeteiMayek::LetterI),
'ꯐ' => Ok(MeeteiMayek::LetterPham),
'ꯑ' => Ok(MeeteiMayek::LetterAtiya),
'ꯒ' => Ok(MeeteiMayek::LetterGok),
'ꯓ' => Ok(MeeteiMayek::LetterJham),
'ꯔ' => Ok(MeeteiMayek::LetterRai),
'ꯕ' => Ok(MeeteiMayek::LetterBa),
'ꯖ' => Ok(MeeteiMayek::LetterJil),
'ꯗ' => Ok(MeeteiMayek::LetterDil),
'ꯘ' => Ok(MeeteiMayek::LetterGhou),
'ꯙ' => Ok(MeeteiMayek::LetterDhou),
'ꯚ' => Ok(MeeteiMayek::LetterBham),
'ꯛ' => Ok(MeeteiMayek::LetterKokLonsum),
'ꯜ' => Ok(MeeteiMayek::LetterLaiLonsum),
'ꯝ' => Ok(MeeteiMayek::LetterMitLonsum),
'ꯞ' => Ok(MeeteiMayek::LetterPaLonsum),
'ꯟ' => Ok(MeeteiMayek::LetterNaLonsum),
'ꯠ' => Ok(MeeteiMayek::LetterTilLonsum),
'ꯡ' => Ok(MeeteiMayek::LetterNgouLonsum),
'ꯢ' => Ok(MeeteiMayek::LetterILonsum),
'ꯣ' => Ok(MeeteiMayek::VowelSignOnap),
'ꯤ' => Ok(MeeteiMayek::VowelSignInap),
'ꯥ' => Ok(MeeteiMayek::VowelSignAnap),
'ꯦ' => Ok(MeeteiMayek::VowelSignYenap),
'ꯧ' => Ok(MeeteiMayek::VowelSignSounap),
'ꯨ' => Ok(MeeteiMayek::VowelSignUnap),
'ꯩ' => Ok(MeeteiMayek::VowelSignCheinap),
'ꯪ' => Ok(MeeteiMayek::VowelSignNung),
'꯫' => Ok(MeeteiMayek::Cheikhei),
'꯬' => Ok(MeeteiMayek::LumIyek),
'꯭' => Ok(MeeteiMayek::ApunIyek),
'꯰' => Ok(MeeteiMayek::DigitZero),
'꯱' => Ok(MeeteiMayek::DigitOne),
'꯲' => Ok(MeeteiMayek::DigitTwo),
'꯳' => Ok(MeeteiMayek::DigitThree),
'꯴' => Ok(MeeteiMayek::DigitFour),
'꯵' => Ok(MeeteiMayek::DigitFive),
'꯶' => Ok(MeeteiMayek::DigitSix),
'꯷' => Ok(MeeteiMayek::DigitSeven),
'꯸' => Ok(MeeteiMayek::DigitEight),
'꯹' => Ok(MeeteiMayek::DigitNine),
_ => Err(()),
}
}
}
impl Into<u32> for MeeteiMayek {
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 MeeteiMayek {
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 MeeteiMayek {
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 MeeteiMayek {
pub fn new() -> Self {
MeeteiMayek::LetterKok
}
pub fn name(&self) -> String {
let s = std::format!("MeeteiMayek{:#?}", self);
string_morph::to_sentence_case(&s)
}
}