#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Phagspa {
PhagsDashPaLetterKa,
PhagsDashPaLetterKha,
PhagsDashPaLetterGa,
PhagsDashPaLetterNga,
PhagsDashPaLetterCa,
PhagsDashPaLetterCha,
PhagsDashPaLetterJa,
PhagsDashPaLetterNya,
PhagsDashPaLetterTa,
PhagsDashPaLetterTha,
PhagsDashPaLetterDa,
PhagsDashPaLetterNa,
PhagsDashPaLetterPa,
PhagsDashPaLetterPha,
PhagsDashPaLetterBa,
PhagsDashPaLetterMa,
PhagsDashPaLetterTsa,
PhagsDashPaLetterTsha,
PhagsDashPaLetterDza,
PhagsDashPaLetterWa,
PhagsDashPaLetterZha,
PhagsDashPaLetterZa,
PhagsDashPaLetterSmallA,
PhagsDashPaLetterYa,
PhagsDashPaLetterRa,
PhagsDashPaLetterLa,
PhagsDashPaLetterSha,
PhagsDashPaLetterSa,
PhagsDashPaLetterHa,
PhagsDashPaLetterA,
PhagsDashPaLetterI,
PhagsDashPaLetterU,
PhagsDashPaLetterE,
PhagsDashPaLetterO,
PhagsDashPaLetterQa,
PhagsDashPaLetterXa,
PhagsDashPaLetterFa,
PhagsDashPaLetterGga,
PhagsDashPaLetterEe,
PhagsDashPaSubjoinedLetterWa,
PhagsDashPaSubjoinedLetterYa,
PhagsDashPaLetterTta,
PhagsDashPaLetterTtha,
PhagsDashPaLetterDda,
PhagsDashPaLetterNna,
PhagsDashPaLetterAlternateYa,
PhagsDashPaLetterVoicelessSha,
PhagsDashPaLetterVoicedHa,
PhagsDashPaLetterAspiratedFa,
PhagsDashPaSubjoinedLetterRa,
PhagsDashPaSuperfixedLetterRa,
PhagsDashPaLetterCandrabindu,
PhagsDashPaSingleHeadMark,
PhagsDashPaDoubleHeadMark,
PhagsDashPaMarkShad,
PhagsDashPaMarkDoubleShad,
}
impl Into<char> for Phagspa {
fn into(self) -> char {
match self {
Phagspa::PhagsDashPaLetterKa => 'ꡀ',
Phagspa::PhagsDashPaLetterKha => 'ꡁ',
Phagspa::PhagsDashPaLetterGa => 'ꡂ',
Phagspa::PhagsDashPaLetterNga => 'ꡃ',
Phagspa::PhagsDashPaLetterCa => 'ꡄ',
Phagspa::PhagsDashPaLetterCha => 'ꡅ',
Phagspa::PhagsDashPaLetterJa => 'ꡆ',
Phagspa::PhagsDashPaLetterNya => 'ꡇ',
Phagspa::PhagsDashPaLetterTa => 'ꡈ',
Phagspa::PhagsDashPaLetterTha => 'ꡉ',
Phagspa::PhagsDashPaLetterDa => 'ꡊ',
Phagspa::PhagsDashPaLetterNa => 'ꡋ',
Phagspa::PhagsDashPaLetterPa => 'ꡌ',
Phagspa::PhagsDashPaLetterPha => 'ꡍ',
Phagspa::PhagsDashPaLetterBa => 'ꡎ',
Phagspa::PhagsDashPaLetterMa => 'ꡏ',
Phagspa::PhagsDashPaLetterTsa => 'ꡐ',
Phagspa::PhagsDashPaLetterTsha => 'ꡑ',
Phagspa::PhagsDashPaLetterDza => 'ꡒ',
Phagspa::PhagsDashPaLetterWa => 'ꡓ',
Phagspa::PhagsDashPaLetterZha => 'ꡔ',
Phagspa::PhagsDashPaLetterZa => 'ꡕ',
Phagspa::PhagsDashPaLetterSmallA => 'ꡖ',
Phagspa::PhagsDashPaLetterYa => 'ꡗ',
Phagspa::PhagsDashPaLetterRa => 'ꡘ',
Phagspa::PhagsDashPaLetterLa => 'ꡙ',
Phagspa::PhagsDashPaLetterSha => 'ꡚ',
Phagspa::PhagsDashPaLetterSa => 'ꡛ',
Phagspa::PhagsDashPaLetterHa => 'ꡜ',
Phagspa::PhagsDashPaLetterA => 'ꡝ',
Phagspa::PhagsDashPaLetterI => 'ꡞ',
Phagspa::PhagsDashPaLetterU => 'ꡟ',
Phagspa::PhagsDashPaLetterE => 'ꡠ',
Phagspa::PhagsDashPaLetterO => 'ꡡ',
Phagspa::PhagsDashPaLetterQa => 'ꡢ',
Phagspa::PhagsDashPaLetterXa => 'ꡣ',
Phagspa::PhagsDashPaLetterFa => 'ꡤ',
Phagspa::PhagsDashPaLetterGga => 'ꡥ',
Phagspa::PhagsDashPaLetterEe => 'ꡦ',
Phagspa::PhagsDashPaSubjoinedLetterWa => 'ꡧ',
Phagspa::PhagsDashPaSubjoinedLetterYa => 'ꡨ',
Phagspa::PhagsDashPaLetterTta => 'ꡩ',
Phagspa::PhagsDashPaLetterTtha => 'ꡪ',
Phagspa::PhagsDashPaLetterDda => 'ꡫ',
Phagspa::PhagsDashPaLetterNna => 'ꡬ',
Phagspa::PhagsDashPaLetterAlternateYa => 'ꡭ',
Phagspa::PhagsDashPaLetterVoicelessSha => 'ꡮ',
Phagspa::PhagsDashPaLetterVoicedHa => 'ꡯ',
Phagspa::PhagsDashPaLetterAspiratedFa => 'ꡰ',
Phagspa::PhagsDashPaSubjoinedLetterRa => 'ꡱ',
Phagspa::PhagsDashPaSuperfixedLetterRa => 'ꡲ',
Phagspa::PhagsDashPaLetterCandrabindu => 'ꡳ',
Phagspa::PhagsDashPaSingleHeadMark => '꡴',
Phagspa::PhagsDashPaDoubleHeadMark => '꡵',
Phagspa::PhagsDashPaMarkShad => '꡶',
Phagspa::PhagsDashPaMarkDoubleShad => '꡷',
}
}
}
impl std::convert::TryFrom<char> for Phagspa {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'ꡀ' => Ok(Phagspa::PhagsDashPaLetterKa),
'ꡁ' => Ok(Phagspa::PhagsDashPaLetterKha),
'ꡂ' => Ok(Phagspa::PhagsDashPaLetterGa),
'ꡃ' => Ok(Phagspa::PhagsDashPaLetterNga),
'ꡄ' => Ok(Phagspa::PhagsDashPaLetterCa),
'ꡅ' => Ok(Phagspa::PhagsDashPaLetterCha),
'ꡆ' => Ok(Phagspa::PhagsDashPaLetterJa),
'ꡇ' => Ok(Phagspa::PhagsDashPaLetterNya),
'ꡈ' => Ok(Phagspa::PhagsDashPaLetterTa),
'ꡉ' => Ok(Phagspa::PhagsDashPaLetterTha),
'ꡊ' => Ok(Phagspa::PhagsDashPaLetterDa),
'ꡋ' => Ok(Phagspa::PhagsDashPaLetterNa),
'ꡌ' => Ok(Phagspa::PhagsDashPaLetterPa),
'ꡍ' => Ok(Phagspa::PhagsDashPaLetterPha),
'ꡎ' => Ok(Phagspa::PhagsDashPaLetterBa),
'ꡏ' => Ok(Phagspa::PhagsDashPaLetterMa),
'ꡐ' => Ok(Phagspa::PhagsDashPaLetterTsa),
'ꡑ' => Ok(Phagspa::PhagsDashPaLetterTsha),
'ꡒ' => Ok(Phagspa::PhagsDashPaLetterDza),
'ꡓ' => Ok(Phagspa::PhagsDashPaLetterWa),
'ꡔ' => Ok(Phagspa::PhagsDashPaLetterZha),
'ꡕ' => Ok(Phagspa::PhagsDashPaLetterZa),
'ꡖ' => Ok(Phagspa::PhagsDashPaLetterSmallA),
'ꡗ' => Ok(Phagspa::PhagsDashPaLetterYa),
'ꡘ' => Ok(Phagspa::PhagsDashPaLetterRa),
'ꡙ' => Ok(Phagspa::PhagsDashPaLetterLa),
'ꡚ' => Ok(Phagspa::PhagsDashPaLetterSha),
'ꡛ' => Ok(Phagspa::PhagsDashPaLetterSa),
'ꡜ' => Ok(Phagspa::PhagsDashPaLetterHa),
'ꡝ' => Ok(Phagspa::PhagsDashPaLetterA),
'ꡞ' => Ok(Phagspa::PhagsDashPaLetterI),
'ꡟ' => Ok(Phagspa::PhagsDashPaLetterU),
'ꡠ' => Ok(Phagspa::PhagsDashPaLetterE),
'ꡡ' => Ok(Phagspa::PhagsDashPaLetterO),
'ꡢ' => Ok(Phagspa::PhagsDashPaLetterQa),
'ꡣ' => Ok(Phagspa::PhagsDashPaLetterXa),
'ꡤ' => Ok(Phagspa::PhagsDashPaLetterFa),
'ꡥ' => Ok(Phagspa::PhagsDashPaLetterGga),
'ꡦ' => Ok(Phagspa::PhagsDashPaLetterEe),
'ꡧ' => Ok(Phagspa::PhagsDashPaSubjoinedLetterWa),
'ꡨ' => Ok(Phagspa::PhagsDashPaSubjoinedLetterYa),
'ꡩ' => Ok(Phagspa::PhagsDashPaLetterTta),
'ꡪ' => Ok(Phagspa::PhagsDashPaLetterTtha),
'ꡫ' => Ok(Phagspa::PhagsDashPaLetterDda),
'ꡬ' => Ok(Phagspa::PhagsDashPaLetterNna),
'ꡭ' => Ok(Phagspa::PhagsDashPaLetterAlternateYa),
'ꡮ' => Ok(Phagspa::PhagsDashPaLetterVoicelessSha),
'ꡯ' => Ok(Phagspa::PhagsDashPaLetterVoicedHa),
'ꡰ' => Ok(Phagspa::PhagsDashPaLetterAspiratedFa),
'ꡱ' => Ok(Phagspa::PhagsDashPaSubjoinedLetterRa),
'ꡲ' => Ok(Phagspa::PhagsDashPaSuperfixedLetterRa),
'ꡳ' => Ok(Phagspa::PhagsDashPaLetterCandrabindu),
'꡴' => Ok(Phagspa::PhagsDashPaSingleHeadMark),
'꡵' => Ok(Phagspa::PhagsDashPaDoubleHeadMark),
'꡶' => Ok(Phagspa::PhagsDashPaMarkShad),
'꡷' => Ok(Phagspa::PhagsDashPaMarkDoubleShad),
_ => Err(()),
}
}
}
impl Into<u32> for Phagspa {
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 Phagspa {
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 Phagspa {
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 Phagspa {
pub fn new() -> Self {
Phagspa::PhagsDashPaLetterKa
}
pub fn name(&self) -> String {
let s = std::format!("Phagspa{:#?}", self);
string_morph::to_sentence_case(&s)
}
}