#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Myanmar {
LetterKa,
LetterKha,
LetterGa,
LetterGha,
LetterNga,
LetterCa,
LetterCha,
LetterJa,
LetterJha,
LetterNya,
LetterNnya,
LetterTta,
LetterTtha,
LetterDda,
LetterDdha,
LetterNna,
LetterTa,
LetterTha,
LetterDa,
LetterDha,
LetterNa,
LetterPa,
LetterPha,
LetterBa,
LetterBha,
LetterMa,
LetterYa,
LetterRa,
LetterLa,
LetterWa,
LetterSa,
LetterHa,
LetterLla,
LetterA,
LetterShanA,
LetterI,
LetterIi,
LetterU,
LetterUu,
LetterE,
LetterMonE,
LetterO,
LetterAu,
VowelSignTallAa,
VowelSignAa,
VowelSignI,
VowelSignIi,
VowelSignU,
VowelSignUu,
VowelSignE,
VowelSignAi,
VowelSignMonIi,
VowelSignMonO,
VowelSignEAbove,
SignAnusvara,
SignDotBelow,
SignVisarga,
SignVirama,
SignAsat,
ConsonantSignMedialYa,
ConsonantSignMedialRa,
ConsonantSignMedialWa,
ConsonantSignMedialHa,
LetterGreatSa,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
SignLittleSection,
SignSection,
SymbolLocative,
SymbolCompleted,
SymbolAforementioned,
SymbolGenitive,
LetterSha,
LetterSsa,
LetterVocalicR,
LetterVocalicRr,
LetterVocalicL,
LetterVocalicLl,
VowelSignVocalicR,
VowelSignVocalicRr,
VowelSignVocalicL,
VowelSignVocalicLl,
LetterMonNga,
LetterMonJha,
LetterMonBba,
LetterMonBbe,
ConsonantSignMonMedialNa,
ConsonantSignMonMedialMa,
ConsonantSignMonMedialLa,
LetterSgawKarenSha,
VowelSignSgawKarenEu,
ToneMarkSgawKarenHathi,
ToneMarkSgawKarenKePho,
LetterWesternPwoKarenTha,
LetterWesternPwoKarenPwa,
VowelSignWesternPwoKarenEu,
VowelSignWesternPwoKarenUe,
SignWesternPwoKarenToneDash1,
SignWesternPwoKarenToneDash2,
SignWesternPwoKarenToneDash3,
SignWesternPwoKarenToneDash4,
SignWesternPwoKarenToneDash5,
LetterEasternPwoKarenNna,
LetterEasternPwoKarenYwa,
LetterEasternPwoKarenGhwa,
VowelSignGebaKarenI,
VowelSignKayahOe,
VowelSignKayahU,
VowelSignKayahEe,
LetterShanKa,
LetterShanKha,
LetterShanGa,
LetterShanCa,
LetterShanZa,
LetterShanNya,
LetterShanDa,
LetterShanNa,
LetterShanPha,
LetterShanFa,
LetterShanBa,
LetterShanTha,
LetterShanHa,
ConsonantSignShanMedialWa,
VowelSignShanAa,
VowelSignShanE,
VowelSignShanEAbove,
VowelSignShanFinalY,
SignShanToneDash2,
SignShanToneDash3,
SignShanToneDash5,
SignShanToneDash6,
SignShanCouncilToneDash2,
SignShanCouncilToneDash3,
SignShanCouncilEmphaticTone,
LetterRumaiPalaungFa,
SignRumaiPalaungToneDash5,
ShanDigitZero,
ShanDigitOne,
ShanDigitTwo,
ShanDigitThree,
ShanDigitFour,
ShanDigitFive,
ShanDigitSix,
ShanDigitSeven,
ShanDigitEight,
ShanDigitNine,
SignKhamtiToneDash1,
SignKhamtiToneDash3,
VowelSignAitonA,
VowelSignAitonAi,
SymbolShanOne,
}
impl Into<char> for Myanmar {
fn into(self) -> char {
match self {
Myanmar::LetterKa => 'က',
Myanmar::LetterKha => 'ခ',
Myanmar::LetterGa => 'ဂ',
Myanmar::LetterGha => 'ဃ',
Myanmar::LetterNga => 'င',
Myanmar::LetterCa => 'စ',
Myanmar::LetterCha => 'ဆ',
Myanmar::LetterJa => 'ဇ',
Myanmar::LetterJha => 'ဈ',
Myanmar::LetterNya => 'ဉ',
Myanmar::LetterNnya => 'ည',
Myanmar::LetterTta => 'ဋ',
Myanmar::LetterTtha => 'ဌ',
Myanmar::LetterDda => 'ဍ',
Myanmar::LetterDdha => 'ဎ',
Myanmar::LetterNna => 'ဏ',
Myanmar::LetterTa => 'တ',
Myanmar::LetterTha => 'ထ',
Myanmar::LetterDa => 'ဒ',
Myanmar::LetterDha => 'ဓ',
Myanmar::LetterNa => 'န',
Myanmar::LetterPa => 'ပ',
Myanmar::LetterPha => 'ဖ',
Myanmar::LetterBa => 'ဗ',
Myanmar::LetterBha => 'ဘ',
Myanmar::LetterMa => 'မ',
Myanmar::LetterYa => 'ယ',
Myanmar::LetterRa => 'ရ',
Myanmar::LetterLa => 'လ',
Myanmar::LetterWa => 'ဝ',
Myanmar::LetterSa => 'သ',
Myanmar::LetterHa => 'ဟ',
Myanmar::LetterLla => 'ဠ',
Myanmar::LetterA => 'အ',
Myanmar::LetterShanA => 'ဢ',
Myanmar::LetterI => 'ဣ',
Myanmar::LetterIi => 'ဤ',
Myanmar::LetterU => 'ဥ',
Myanmar::LetterUu => 'ဦ',
Myanmar::LetterE => 'ဧ',
Myanmar::LetterMonE => 'ဨ',
Myanmar::LetterO => 'ဩ',
Myanmar::LetterAu => 'ဪ',
Myanmar::VowelSignTallAa => 'ါ',
Myanmar::VowelSignAa => 'ာ',
Myanmar::VowelSignI => 'ိ',
Myanmar::VowelSignIi => 'ီ',
Myanmar::VowelSignU => 'ု',
Myanmar::VowelSignUu => 'ူ',
Myanmar::VowelSignE => 'ေ',
Myanmar::VowelSignAi => 'ဲ',
Myanmar::VowelSignMonIi => 'ဳ',
Myanmar::VowelSignMonO => 'ဴ',
Myanmar::VowelSignEAbove => 'ဵ',
Myanmar::SignAnusvara => 'ံ',
Myanmar::SignDotBelow => '့',
Myanmar::SignVisarga => 'း',
Myanmar::SignVirama => '္',
Myanmar::SignAsat => '်',
Myanmar::ConsonantSignMedialYa => 'ျ',
Myanmar::ConsonantSignMedialRa => 'ြ',
Myanmar::ConsonantSignMedialWa => 'ွ',
Myanmar::ConsonantSignMedialHa => 'ှ',
Myanmar::LetterGreatSa => 'ဿ',
Myanmar::DigitZero => '၀',
Myanmar::DigitOne => '၁',
Myanmar::DigitTwo => '၂',
Myanmar::DigitThree => '၃',
Myanmar::DigitFour => '၄',
Myanmar::DigitFive => '၅',
Myanmar::DigitSix => '၆',
Myanmar::DigitSeven => '၇',
Myanmar::DigitEight => '၈',
Myanmar::DigitNine => '၉',
Myanmar::SignLittleSection => '၊',
Myanmar::SignSection => '။',
Myanmar::SymbolLocative => '၌',
Myanmar::SymbolCompleted => '၍',
Myanmar::SymbolAforementioned => '၎',
Myanmar::SymbolGenitive => '၏',
Myanmar::LetterSha => 'ၐ',
Myanmar::LetterSsa => 'ၑ',
Myanmar::LetterVocalicR => 'ၒ',
Myanmar::LetterVocalicRr => 'ၓ',
Myanmar::LetterVocalicL => 'ၔ',
Myanmar::LetterVocalicLl => 'ၕ',
Myanmar::VowelSignVocalicR => 'ၖ',
Myanmar::VowelSignVocalicRr => 'ၗ',
Myanmar::VowelSignVocalicL => 'ၘ',
Myanmar::VowelSignVocalicLl => 'ၙ',
Myanmar::LetterMonNga => 'ၚ',
Myanmar::LetterMonJha => 'ၛ',
Myanmar::LetterMonBba => 'ၜ',
Myanmar::LetterMonBbe => 'ၝ',
Myanmar::ConsonantSignMonMedialNa => 'ၞ',
Myanmar::ConsonantSignMonMedialMa => 'ၟ',
Myanmar::ConsonantSignMonMedialLa => 'ၠ',
Myanmar::LetterSgawKarenSha => 'ၡ',
Myanmar::VowelSignSgawKarenEu => 'ၢ',
Myanmar::ToneMarkSgawKarenHathi => 'ၣ',
Myanmar::ToneMarkSgawKarenKePho => 'ၤ',
Myanmar::LetterWesternPwoKarenTha => 'ၥ',
Myanmar::LetterWesternPwoKarenPwa => 'ၦ',
Myanmar::VowelSignWesternPwoKarenEu => 'ၧ',
Myanmar::VowelSignWesternPwoKarenUe => 'ၨ',
Myanmar::SignWesternPwoKarenToneDash1 => 'ၩ',
Myanmar::SignWesternPwoKarenToneDash2 => 'ၪ',
Myanmar::SignWesternPwoKarenToneDash3 => 'ၫ',
Myanmar::SignWesternPwoKarenToneDash4 => 'ၬ',
Myanmar::SignWesternPwoKarenToneDash5 => 'ၭ',
Myanmar::LetterEasternPwoKarenNna => 'ၮ',
Myanmar::LetterEasternPwoKarenYwa => 'ၯ',
Myanmar::LetterEasternPwoKarenGhwa => 'ၰ',
Myanmar::VowelSignGebaKarenI => 'ၱ',
Myanmar::VowelSignKayahOe => 'ၲ',
Myanmar::VowelSignKayahU => 'ၳ',
Myanmar::VowelSignKayahEe => 'ၴ',
Myanmar::LetterShanKa => 'ၵ',
Myanmar::LetterShanKha => 'ၶ',
Myanmar::LetterShanGa => 'ၷ',
Myanmar::LetterShanCa => 'ၸ',
Myanmar::LetterShanZa => 'ၹ',
Myanmar::LetterShanNya => 'ၺ',
Myanmar::LetterShanDa => 'ၻ',
Myanmar::LetterShanNa => 'ၼ',
Myanmar::LetterShanPha => 'ၽ',
Myanmar::LetterShanFa => 'ၾ',
Myanmar::LetterShanBa => 'ၿ',
Myanmar::LetterShanTha => 'ႀ',
Myanmar::LetterShanHa => 'ႁ',
Myanmar::ConsonantSignShanMedialWa => 'ႂ',
Myanmar::VowelSignShanAa => 'ႃ',
Myanmar::VowelSignShanE => 'ႄ',
Myanmar::VowelSignShanEAbove => 'ႅ',
Myanmar::VowelSignShanFinalY => 'ႆ',
Myanmar::SignShanToneDash2 => 'ႇ',
Myanmar::SignShanToneDash3 => 'ႈ',
Myanmar::SignShanToneDash5 => 'ႉ',
Myanmar::SignShanToneDash6 => 'ႊ',
Myanmar::SignShanCouncilToneDash2 => 'ႋ',
Myanmar::SignShanCouncilToneDash3 => 'ႌ',
Myanmar::SignShanCouncilEmphaticTone => 'ႍ',
Myanmar::LetterRumaiPalaungFa => 'ႎ',
Myanmar::SignRumaiPalaungToneDash5 => 'ႏ',
Myanmar::ShanDigitZero => '႐',
Myanmar::ShanDigitOne => '႑',
Myanmar::ShanDigitTwo => '႒',
Myanmar::ShanDigitThree => '႓',
Myanmar::ShanDigitFour => '႔',
Myanmar::ShanDigitFive => '႕',
Myanmar::ShanDigitSix => '႖',
Myanmar::ShanDigitSeven => '႗',
Myanmar::ShanDigitEight => '႘',
Myanmar::ShanDigitNine => '႙',
Myanmar::SignKhamtiToneDash1 => 'ႚ',
Myanmar::SignKhamtiToneDash3 => 'ႛ',
Myanmar::VowelSignAitonA => 'ႜ',
Myanmar::VowelSignAitonAi => 'ႝ',
Myanmar::SymbolShanOne => '႞',
}
}
}
impl std::convert::TryFrom<char> for Myanmar {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'က' => Ok(Myanmar::LetterKa),
'ခ' => Ok(Myanmar::LetterKha),
'ဂ' => Ok(Myanmar::LetterGa),
'ဃ' => Ok(Myanmar::LetterGha),
'င' => Ok(Myanmar::LetterNga),
'စ' => Ok(Myanmar::LetterCa),
'ဆ' => Ok(Myanmar::LetterCha),
'ဇ' => Ok(Myanmar::LetterJa),
'ဈ' => Ok(Myanmar::LetterJha),
'ဉ' => Ok(Myanmar::LetterNya),
'ည' => Ok(Myanmar::LetterNnya),
'ဋ' => Ok(Myanmar::LetterTta),
'ဌ' => Ok(Myanmar::LetterTtha),
'ဍ' => Ok(Myanmar::LetterDda),
'ဎ' => Ok(Myanmar::LetterDdha),
'ဏ' => Ok(Myanmar::LetterNna),
'တ' => Ok(Myanmar::LetterTa),
'ထ' => Ok(Myanmar::LetterTha),
'ဒ' => Ok(Myanmar::LetterDa),
'ဓ' => Ok(Myanmar::LetterDha),
'န' => Ok(Myanmar::LetterNa),
'ပ' => Ok(Myanmar::LetterPa),
'ဖ' => Ok(Myanmar::LetterPha),
'ဗ' => Ok(Myanmar::LetterBa),
'ဘ' => Ok(Myanmar::LetterBha),
'မ' => Ok(Myanmar::LetterMa),
'ယ' => Ok(Myanmar::LetterYa),
'ရ' => Ok(Myanmar::LetterRa),
'လ' => Ok(Myanmar::LetterLa),
'ဝ' => Ok(Myanmar::LetterWa),
'သ' => Ok(Myanmar::LetterSa),
'ဟ' => Ok(Myanmar::LetterHa),
'ဠ' => Ok(Myanmar::LetterLla),
'အ' => Ok(Myanmar::LetterA),
'ဢ' => Ok(Myanmar::LetterShanA),
'ဣ' => Ok(Myanmar::LetterI),
'ဤ' => Ok(Myanmar::LetterIi),
'ဥ' => Ok(Myanmar::LetterU),
'ဦ' => Ok(Myanmar::LetterUu),
'ဧ' => Ok(Myanmar::LetterE),
'ဨ' => Ok(Myanmar::LetterMonE),
'ဩ' => Ok(Myanmar::LetterO),
'ဪ' => Ok(Myanmar::LetterAu),
'ါ' => Ok(Myanmar::VowelSignTallAa),
'ာ' => Ok(Myanmar::VowelSignAa),
'ိ' => Ok(Myanmar::VowelSignI),
'ီ' => Ok(Myanmar::VowelSignIi),
'ု' => Ok(Myanmar::VowelSignU),
'ူ' => Ok(Myanmar::VowelSignUu),
'ေ' => Ok(Myanmar::VowelSignE),
'ဲ' => Ok(Myanmar::VowelSignAi),
'ဳ' => Ok(Myanmar::VowelSignMonIi),
'ဴ' => Ok(Myanmar::VowelSignMonO),
'ဵ' => Ok(Myanmar::VowelSignEAbove),
'ံ' => Ok(Myanmar::SignAnusvara),
'့' => Ok(Myanmar::SignDotBelow),
'း' => Ok(Myanmar::SignVisarga),
'္' => Ok(Myanmar::SignVirama),
'်' => Ok(Myanmar::SignAsat),
'ျ' => Ok(Myanmar::ConsonantSignMedialYa),
'ြ' => Ok(Myanmar::ConsonantSignMedialRa),
'ွ' => Ok(Myanmar::ConsonantSignMedialWa),
'ှ' => Ok(Myanmar::ConsonantSignMedialHa),
'ဿ' => Ok(Myanmar::LetterGreatSa),
'၀' => Ok(Myanmar::DigitZero),
'၁' => Ok(Myanmar::DigitOne),
'၂' => Ok(Myanmar::DigitTwo),
'၃' => Ok(Myanmar::DigitThree),
'၄' => Ok(Myanmar::DigitFour),
'၅' => Ok(Myanmar::DigitFive),
'၆' => Ok(Myanmar::DigitSix),
'၇' => Ok(Myanmar::DigitSeven),
'၈' => Ok(Myanmar::DigitEight),
'၉' => Ok(Myanmar::DigitNine),
'၊' => Ok(Myanmar::SignLittleSection),
'။' => Ok(Myanmar::SignSection),
'၌' => Ok(Myanmar::SymbolLocative),
'၍' => Ok(Myanmar::SymbolCompleted),
'၎' => Ok(Myanmar::SymbolAforementioned),
'၏' => Ok(Myanmar::SymbolGenitive),
'ၐ' => Ok(Myanmar::LetterSha),
'ၑ' => Ok(Myanmar::LetterSsa),
'ၒ' => Ok(Myanmar::LetterVocalicR),
'ၓ' => Ok(Myanmar::LetterVocalicRr),
'ၔ' => Ok(Myanmar::LetterVocalicL),
'ၕ' => Ok(Myanmar::LetterVocalicLl),
'ၖ' => Ok(Myanmar::VowelSignVocalicR),
'ၗ' => Ok(Myanmar::VowelSignVocalicRr),
'ၘ' => Ok(Myanmar::VowelSignVocalicL),
'ၙ' => Ok(Myanmar::VowelSignVocalicLl),
'ၚ' => Ok(Myanmar::LetterMonNga),
'ၛ' => Ok(Myanmar::LetterMonJha),
'ၜ' => Ok(Myanmar::LetterMonBba),
'ၝ' => Ok(Myanmar::LetterMonBbe),
'ၞ' => Ok(Myanmar::ConsonantSignMonMedialNa),
'ၟ' => Ok(Myanmar::ConsonantSignMonMedialMa),
'ၠ' => Ok(Myanmar::ConsonantSignMonMedialLa),
'ၡ' => Ok(Myanmar::LetterSgawKarenSha),
'ၢ' => Ok(Myanmar::VowelSignSgawKarenEu),
'ၣ' => Ok(Myanmar::ToneMarkSgawKarenHathi),
'ၤ' => Ok(Myanmar::ToneMarkSgawKarenKePho),
'ၥ' => Ok(Myanmar::LetterWesternPwoKarenTha),
'ၦ' => Ok(Myanmar::LetterWesternPwoKarenPwa),
'ၧ' => Ok(Myanmar::VowelSignWesternPwoKarenEu),
'ၨ' => Ok(Myanmar::VowelSignWesternPwoKarenUe),
'ၩ' => Ok(Myanmar::SignWesternPwoKarenToneDash1),
'ၪ' => Ok(Myanmar::SignWesternPwoKarenToneDash2),
'ၫ' => Ok(Myanmar::SignWesternPwoKarenToneDash3),
'ၬ' => Ok(Myanmar::SignWesternPwoKarenToneDash4),
'ၭ' => Ok(Myanmar::SignWesternPwoKarenToneDash5),
'ၮ' => Ok(Myanmar::LetterEasternPwoKarenNna),
'ၯ' => Ok(Myanmar::LetterEasternPwoKarenYwa),
'ၰ' => Ok(Myanmar::LetterEasternPwoKarenGhwa),
'ၱ' => Ok(Myanmar::VowelSignGebaKarenI),
'ၲ' => Ok(Myanmar::VowelSignKayahOe),
'ၳ' => Ok(Myanmar::VowelSignKayahU),
'ၴ' => Ok(Myanmar::VowelSignKayahEe),
'ၵ' => Ok(Myanmar::LetterShanKa),
'ၶ' => Ok(Myanmar::LetterShanKha),
'ၷ' => Ok(Myanmar::LetterShanGa),
'ၸ' => Ok(Myanmar::LetterShanCa),
'ၹ' => Ok(Myanmar::LetterShanZa),
'ၺ' => Ok(Myanmar::LetterShanNya),
'ၻ' => Ok(Myanmar::LetterShanDa),
'ၼ' => Ok(Myanmar::LetterShanNa),
'ၽ' => Ok(Myanmar::LetterShanPha),
'ၾ' => Ok(Myanmar::LetterShanFa),
'ၿ' => Ok(Myanmar::LetterShanBa),
'ႀ' => Ok(Myanmar::LetterShanTha),
'ႁ' => Ok(Myanmar::LetterShanHa),
'ႂ' => Ok(Myanmar::ConsonantSignShanMedialWa),
'ႃ' => Ok(Myanmar::VowelSignShanAa),
'ႄ' => Ok(Myanmar::VowelSignShanE),
'ႅ' => Ok(Myanmar::VowelSignShanEAbove),
'ႆ' => Ok(Myanmar::VowelSignShanFinalY),
'ႇ' => Ok(Myanmar::SignShanToneDash2),
'ႈ' => Ok(Myanmar::SignShanToneDash3),
'ႉ' => Ok(Myanmar::SignShanToneDash5),
'ႊ' => Ok(Myanmar::SignShanToneDash6),
'ႋ' => Ok(Myanmar::SignShanCouncilToneDash2),
'ႌ' => Ok(Myanmar::SignShanCouncilToneDash3),
'ႍ' => Ok(Myanmar::SignShanCouncilEmphaticTone),
'ႎ' => Ok(Myanmar::LetterRumaiPalaungFa),
'ႏ' => Ok(Myanmar::SignRumaiPalaungToneDash5),
'႐' => Ok(Myanmar::ShanDigitZero),
'႑' => Ok(Myanmar::ShanDigitOne),
'႒' => Ok(Myanmar::ShanDigitTwo),
'႓' => Ok(Myanmar::ShanDigitThree),
'႔' => Ok(Myanmar::ShanDigitFour),
'႕' => Ok(Myanmar::ShanDigitFive),
'႖' => Ok(Myanmar::ShanDigitSix),
'႗' => Ok(Myanmar::ShanDigitSeven),
'႘' => Ok(Myanmar::ShanDigitEight),
'႙' => Ok(Myanmar::ShanDigitNine),
'ႚ' => Ok(Myanmar::SignKhamtiToneDash1),
'ႛ' => Ok(Myanmar::SignKhamtiToneDash3),
'ႜ' => Ok(Myanmar::VowelSignAitonA),
'ႝ' => Ok(Myanmar::VowelSignAitonAi),
'႞' => Ok(Myanmar::SymbolShanOne),
_ => Err(()),
}
}
}
impl Into<u32> for Myanmar {
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 Myanmar {
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 Myanmar {
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 Myanmar {
pub fn new() -> Self {
Myanmar::LetterKa
}
pub fn name(&self) -> String {
let s = std::format!("Myanmar{:#?}", self);
string_morph::to_sentence_case(&s)
}
}