mod constants {
pub const LETTER_KOK: char = 'ꯀ';
pub const LETTER_SAM: char = 'ꯁ';
pub const LETTER_LAI: char = 'ꯂ';
pub const LETTER_MIT: char = 'ꯃ';
pub const LETTER_PA: char = 'ꯄ';
pub const LETTER_NA: char = 'ꯅ';
pub const LETTER_CHIL: char = 'ꯆ';
pub const LETTER_TIL: char = 'ꯇ';
pub const LETTER_KHOU: char = 'ꯈ';
pub const LETTER_NGOU: char = 'ꯉ';
pub const LETTER_THOU: char = 'ꯊ';
pub const LETTER_WAI: char = 'ꯋ';
pub const LETTER_YANG: char = 'ꯌ';
pub const LETTER_HUK: char = 'ꯍ';
pub const LETTER_UN: char = 'ꯎ';
pub const LETTER_I: char = 'ꯏ';
pub const LETTER_PHAM: char = 'ꯐ';
pub const LETTER_ATIYA: char = 'ꯑ';
pub const LETTER_GOK: char = 'ꯒ';
pub const LETTER_JHAM: char = 'ꯓ';
pub const LETTER_RAI: char = 'ꯔ';
pub const LETTER_BA: char = 'ꯕ';
pub const LETTER_JIL: char = 'ꯖ';
pub const LETTER_DIL: char = 'ꯗ';
pub const LETTER_GHOU: char = 'ꯘ';
pub const LETTER_DHOU: char = 'ꯙ';
pub const LETTER_BHAM: char = 'ꯚ';
pub const LETTER_KOK_LONSUM: char = 'ꯛ';
pub const LETTER_LAI_LONSUM: char = 'ꯜ';
pub const LETTER_MIT_LONSUM: char = 'ꯝ';
pub const LETTER_PA_LONSUM: char = 'ꯞ';
pub const LETTER_NA_LONSUM: char = 'ꯟ';
pub const LETTER_TIL_LONSUM: char = 'ꯠ';
pub const LETTER_NGOU_LONSUM: char = 'ꯡ';
pub const LETTER_I_LONSUM: char = 'ꯢ';
pub const VOWEL_SIGN_ONAP: char = 'ꯣ';
pub const VOWEL_SIGN_INAP: char = 'ꯤ';
pub const VOWEL_SIGN_ANAP: char = 'ꯥ';
pub const VOWEL_SIGN_YENAP: char = 'ꯦ';
pub const VOWEL_SIGN_SOUNAP: char = 'ꯧ';
pub const VOWEL_SIGN_UNAP: char = 'ꯨ';
pub const VOWEL_SIGN_CHEINAP: char = 'ꯩ';
pub const VOWEL_SIGN_NUNG: char = 'ꯪ';
pub const CHEIKHEI: char = '꯫';
pub const LUM_IYEK: char = '꯬';
pub const APUN_IYEK: char = '꯭';
pub const DIGIT_ZERO: char = '꯰';
pub const DIGIT_ONE: char = '꯱';
pub const DIGIT_TWO: char = '꯲';
pub const DIGIT_THREE: char = '꯳';
pub const DIGIT_FOUR: char = '꯴';
pub const DIGIT_FIVE: char = '꯵';
pub const DIGIT_SIX: char = '꯶';
pub const DIGIT_SEVEN: char = '꯷';
pub const DIGIT_EIGHT: char = '꯸';
pub const DIGIT_NINE: char = '꯹';
}
#[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 {
use constants::*;
match self {
MeeteiMayek::LetterKok => LETTER_KOK,
MeeteiMayek::LetterSam => LETTER_SAM,
MeeteiMayek::LetterLai => LETTER_LAI,
MeeteiMayek::LetterMit => LETTER_MIT,
MeeteiMayek::LetterPa => LETTER_PA,
MeeteiMayek::LetterNa => LETTER_NA,
MeeteiMayek::LetterChil => LETTER_CHIL,
MeeteiMayek::LetterTil => LETTER_TIL,
MeeteiMayek::LetterKhou => LETTER_KHOU,
MeeteiMayek::LetterNgou => LETTER_NGOU,
MeeteiMayek::LetterThou => LETTER_THOU,
MeeteiMayek::LetterWai => LETTER_WAI,
MeeteiMayek::LetterYang => LETTER_YANG,
MeeteiMayek::LetterHuk => LETTER_HUK,
MeeteiMayek::LetterUn => LETTER_UN,
MeeteiMayek::LetterI => LETTER_I,
MeeteiMayek::LetterPham => LETTER_PHAM,
MeeteiMayek::LetterAtiya => LETTER_ATIYA,
MeeteiMayek::LetterGok => LETTER_GOK,
MeeteiMayek::LetterJham => LETTER_JHAM,
MeeteiMayek::LetterRai => LETTER_RAI,
MeeteiMayek::LetterBa => LETTER_BA,
MeeteiMayek::LetterJil => LETTER_JIL,
MeeteiMayek::LetterDil => LETTER_DIL,
MeeteiMayek::LetterGhou => LETTER_GHOU,
MeeteiMayek::LetterDhou => LETTER_DHOU,
MeeteiMayek::LetterBham => LETTER_BHAM,
MeeteiMayek::LetterKokLonsum => LETTER_KOK_LONSUM,
MeeteiMayek::LetterLaiLonsum => LETTER_LAI_LONSUM,
MeeteiMayek::LetterMitLonsum => LETTER_MIT_LONSUM,
MeeteiMayek::LetterPaLonsum => LETTER_PA_LONSUM,
MeeteiMayek::LetterNaLonsum => LETTER_NA_LONSUM,
MeeteiMayek::LetterTilLonsum => LETTER_TIL_LONSUM,
MeeteiMayek::LetterNgouLonsum => LETTER_NGOU_LONSUM,
MeeteiMayek::LetterILonsum => LETTER_I_LONSUM,
MeeteiMayek::VowelSignOnap => VOWEL_SIGN_ONAP,
MeeteiMayek::VowelSignInap => VOWEL_SIGN_INAP,
MeeteiMayek::VowelSignAnap => VOWEL_SIGN_ANAP,
MeeteiMayek::VowelSignYenap => VOWEL_SIGN_YENAP,
MeeteiMayek::VowelSignSounap => VOWEL_SIGN_SOUNAP,
MeeteiMayek::VowelSignUnap => VOWEL_SIGN_UNAP,
MeeteiMayek::VowelSignCheinap => VOWEL_SIGN_CHEINAP,
MeeteiMayek::VowelSignNung => VOWEL_SIGN_NUNG,
MeeteiMayek::Cheikhei => CHEIKHEI,
MeeteiMayek::LumIyek => LUM_IYEK,
MeeteiMayek::ApunIyek => APUN_IYEK,
MeeteiMayek::DigitZero => DIGIT_ZERO,
MeeteiMayek::DigitOne => DIGIT_ONE,
MeeteiMayek::DigitTwo => DIGIT_TWO,
MeeteiMayek::DigitThree => DIGIT_THREE,
MeeteiMayek::DigitFour => DIGIT_FOUR,
MeeteiMayek::DigitFive => DIGIT_FIVE,
MeeteiMayek::DigitSix => DIGIT_SIX,
MeeteiMayek::DigitSeven => DIGIT_SEVEN,
MeeteiMayek::DigitEight => DIGIT_EIGHT,
MeeteiMayek::DigitNine => DIGIT_NINE,
}
}
}
impl std::convert::TryFrom<char> for MeeteiMayek {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
LETTER_KOK => Ok(MeeteiMayek::LetterKok),
LETTER_SAM => Ok(MeeteiMayek::LetterSam),
LETTER_LAI => Ok(MeeteiMayek::LetterLai),
LETTER_MIT => Ok(MeeteiMayek::LetterMit),
LETTER_PA => Ok(MeeteiMayek::LetterPa),
LETTER_NA => Ok(MeeteiMayek::LetterNa),
LETTER_CHIL => Ok(MeeteiMayek::LetterChil),
LETTER_TIL => Ok(MeeteiMayek::LetterTil),
LETTER_KHOU => Ok(MeeteiMayek::LetterKhou),
LETTER_NGOU => Ok(MeeteiMayek::LetterNgou),
LETTER_THOU => Ok(MeeteiMayek::LetterThou),
LETTER_WAI => Ok(MeeteiMayek::LetterWai),
LETTER_YANG => Ok(MeeteiMayek::LetterYang),
LETTER_HUK => Ok(MeeteiMayek::LetterHuk),
LETTER_UN => Ok(MeeteiMayek::LetterUn),
LETTER_I => Ok(MeeteiMayek::LetterI),
LETTER_PHAM => Ok(MeeteiMayek::LetterPham),
LETTER_ATIYA => Ok(MeeteiMayek::LetterAtiya),
LETTER_GOK => Ok(MeeteiMayek::LetterGok),
LETTER_JHAM => Ok(MeeteiMayek::LetterJham),
LETTER_RAI => Ok(MeeteiMayek::LetterRai),
LETTER_BA => Ok(MeeteiMayek::LetterBa),
LETTER_JIL => Ok(MeeteiMayek::LetterJil),
LETTER_DIL => Ok(MeeteiMayek::LetterDil),
LETTER_GHOU => Ok(MeeteiMayek::LetterGhou),
LETTER_DHOU => Ok(MeeteiMayek::LetterDhou),
LETTER_BHAM => Ok(MeeteiMayek::LetterBham),
LETTER_KOK_LONSUM => Ok(MeeteiMayek::LetterKokLonsum),
LETTER_LAI_LONSUM => Ok(MeeteiMayek::LetterLaiLonsum),
LETTER_MIT_LONSUM => Ok(MeeteiMayek::LetterMitLonsum),
LETTER_PA_LONSUM => Ok(MeeteiMayek::LetterPaLonsum),
LETTER_NA_LONSUM => Ok(MeeteiMayek::LetterNaLonsum),
LETTER_TIL_LONSUM => Ok(MeeteiMayek::LetterTilLonsum),
LETTER_NGOU_LONSUM => Ok(MeeteiMayek::LetterNgouLonsum),
LETTER_I_LONSUM => Ok(MeeteiMayek::LetterILonsum),
VOWEL_SIGN_ONAP => Ok(MeeteiMayek::VowelSignOnap),
VOWEL_SIGN_INAP => Ok(MeeteiMayek::VowelSignInap),
VOWEL_SIGN_ANAP => Ok(MeeteiMayek::VowelSignAnap),
VOWEL_SIGN_YENAP => Ok(MeeteiMayek::VowelSignYenap),
VOWEL_SIGN_SOUNAP => Ok(MeeteiMayek::VowelSignSounap),
VOWEL_SIGN_UNAP => Ok(MeeteiMayek::VowelSignUnap),
VOWEL_SIGN_CHEINAP => Ok(MeeteiMayek::VowelSignCheinap),
VOWEL_SIGN_NUNG => Ok(MeeteiMayek::VowelSignNung),
CHEIKHEI => Ok(MeeteiMayek::Cheikhei),
LUM_IYEK => Ok(MeeteiMayek::LumIyek),
APUN_IYEK => Ok(MeeteiMayek::ApunIyek),
DIGIT_ZERO => Ok(MeeteiMayek::DigitZero),
DIGIT_ONE => Ok(MeeteiMayek::DigitOne),
DIGIT_TWO => Ok(MeeteiMayek::DigitTwo),
DIGIT_THREE => Ok(MeeteiMayek::DigitThree),
DIGIT_FOUR => Ok(MeeteiMayek::DigitFour),
DIGIT_FIVE => Ok(MeeteiMayek::DigitFive),
DIGIT_SIX => Ok(MeeteiMayek::DigitSix),
DIGIT_SEVEN => Ok(MeeteiMayek::DigitSeven),
DIGIT_EIGHT => Ok(MeeteiMayek::DigitEight),
DIGIT_NINE => 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) -> &str {
match self {
MeeteiMayek::LetterKok => "meetei mayek letter kok",
MeeteiMayek::LetterSam => "meetei mayek letter sam",
MeeteiMayek::LetterLai => "meetei mayek letter lai",
MeeteiMayek::LetterMit => "meetei mayek letter mit",
MeeteiMayek::LetterPa => "meetei mayek letter pa",
MeeteiMayek::LetterNa => "meetei mayek letter na",
MeeteiMayek::LetterChil => "meetei mayek letter chil",
MeeteiMayek::LetterTil => "meetei mayek letter til",
MeeteiMayek::LetterKhou => "meetei mayek letter khou",
MeeteiMayek::LetterNgou => "meetei mayek letter ngou",
MeeteiMayek::LetterThou => "meetei mayek letter thou",
MeeteiMayek::LetterWai => "meetei mayek letter wai",
MeeteiMayek::LetterYang => "meetei mayek letter yang",
MeeteiMayek::LetterHuk => "meetei mayek letter huk",
MeeteiMayek::LetterUn => "meetei mayek letter un",
MeeteiMayek::LetterI => "meetei mayek letter i",
MeeteiMayek::LetterPham => "meetei mayek letter pham",
MeeteiMayek::LetterAtiya => "meetei mayek letter atiya",
MeeteiMayek::LetterGok => "meetei mayek letter gok",
MeeteiMayek::LetterJham => "meetei mayek letter jham",
MeeteiMayek::LetterRai => "meetei mayek letter rai",
MeeteiMayek::LetterBa => "meetei mayek letter ba",
MeeteiMayek::LetterJil => "meetei mayek letter jil",
MeeteiMayek::LetterDil => "meetei mayek letter dil",
MeeteiMayek::LetterGhou => "meetei mayek letter ghou",
MeeteiMayek::LetterDhou => "meetei mayek letter dhou",
MeeteiMayek::LetterBham => "meetei mayek letter bham",
MeeteiMayek::LetterKokLonsum => "meetei mayek letter kok lonsum",
MeeteiMayek::LetterLaiLonsum => "meetei mayek letter lai lonsum",
MeeteiMayek::LetterMitLonsum => "meetei mayek letter mit lonsum",
MeeteiMayek::LetterPaLonsum => "meetei mayek letter pa lonsum",
MeeteiMayek::LetterNaLonsum => "meetei mayek letter na lonsum",
MeeteiMayek::LetterTilLonsum => "meetei mayek letter til lonsum",
MeeteiMayek::LetterNgouLonsum => "meetei mayek letter ngou lonsum",
MeeteiMayek::LetterILonsum => "meetei mayek letter i lonsum",
MeeteiMayek::VowelSignOnap => "meetei mayek vowel sign onap",
MeeteiMayek::VowelSignInap => "meetei mayek vowel sign inap",
MeeteiMayek::VowelSignAnap => "meetei mayek vowel sign anap",
MeeteiMayek::VowelSignYenap => "meetei mayek vowel sign yenap",
MeeteiMayek::VowelSignSounap => "meetei mayek vowel sign sounap",
MeeteiMayek::VowelSignUnap => "meetei mayek vowel sign unap",
MeeteiMayek::VowelSignCheinap => "meetei mayek vowel sign cheinap",
MeeteiMayek::VowelSignNung => "meetei mayek vowel sign nung",
MeeteiMayek::Cheikhei => "meetei mayek cheikhei",
MeeteiMayek::LumIyek => "meetei mayek lum iyek",
MeeteiMayek::ApunIyek => "meetei mayek apun iyek",
MeeteiMayek::DigitZero => "meetei mayek digit zero",
MeeteiMayek::DigitOne => "meetei mayek digit one",
MeeteiMayek::DigitTwo => "meetei mayek digit two",
MeeteiMayek::DigitThree => "meetei mayek digit three",
MeeteiMayek::DigitFour => "meetei mayek digit four",
MeeteiMayek::DigitFive => "meetei mayek digit five",
MeeteiMayek::DigitSix => "meetei mayek digit six",
MeeteiMayek::DigitSeven => "meetei mayek digit seven",
MeeteiMayek::DigitEight => "meetei mayek digit eight",
MeeteiMayek::DigitNine => "meetei mayek digit nine",
}
}
}