#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Sundanese {
SignPanyecek,
SignPanglayar,
SignPangwisad,
LetterA,
LetterI,
LetterU,
LetterAe,
LetterO,
LetterE,
LetterEu,
LetterKa,
LetterQa,
LetterGa,
LetterNga,
LetterCa,
LetterJa,
LetterZa,
LetterNya,
LetterTa,
LetterDa,
LetterNa,
LetterPa,
LetterFa,
LetterVa,
LetterBa,
LetterMa,
LetterYa,
LetterRa,
LetterLa,
LetterWa,
LetterSa,
LetterXa,
LetterHa,
ConsonantSignPamingkal,
ConsonantSignPanyakra,
ConsonantSignPanyiku,
VowelSignPanghulu,
VowelSignPanyuku,
VowelSignPanaelaeng,
VowelSignPanolong,
VowelSignPamepet,
VowelSignPaneuleung,
SignPamaaeh,
SignVirama,
ConsonantSignPasanganMa,
ConsonantSignPasanganWa,
LetterKha,
LetterSya,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
Avagraha,
LetterReu,
LetterLeu,
LetterBha,
LetterFinalK,
}
impl Into<char> for Sundanese {
fn into(self) -> char {
match self {
Sundanese::SignPanyecek => 'ᮀ',
Sundanese::SignPanglayar => 'ᮁ',
Sundanese::SignPangwisad => 'ᮂ',
Sundanese::LetterA => 'ᮃ',
Sundanese::LetterI => 'ᮄ',
Sundanese::LetterU => 'ᮅ',
Sundanese::LetterAe => 'ᮆ',
Sundanese::LetterO => 'ᮇ',
Sundanese::LetterE => 'ᮈ',
Sundanese::LetterEu => 'ᮉ',
Sundanese::LetterKa => 'ᮊ',
Sundanese::LetterQa => 'ᮋ',
Sundanese::LetterGa => 'ᮌ',
Sundanese::LetterNga => 'ᮍ',
Sundanese::LetterCa => 'ᮎ',
Sundanese::LetterJa => 'ᮏ',
Sundanese::LetterZa => 'ᮐ',
Sundanese::LetterNya => 'ᮑ',
Sundanese::LetterTa => 'ᮒ',
Sundanese::LetterDa => 'ᮓ',
Sundanese::LetterNa => 'ᮔ',
Sundanese::LetterPa => 'ᮕ',
Sundanese::LetterFa => 'ᮖ',
Sundanese::LetterVa => 'ᮗ',
Sundanese::LetterBa => 'ᮘ',
Sundanese::LetterMa => 'ᮙ',
Sundanese::LetterYa => 'ᮚ',
Sundanese::LetterRa => 'ᮛ',
Sundanese::LetterLa => 'ᮜ',
Sundanese::LetterWa => 'ᮝ',
Sundanese::LetterSa => 'ᮞ',
Sundanese::LetterXa => 'ᮟ',
Sundanese::LetterHa => 'ᮠ',
Sundanese::ConsonantSignPamingkal => 'ᮡ',
Sundanese::ConsonantSignPanyakra => 'ᮢ',
Sundanese::ConsonantSignPanyiku => 'ᮣ',
Sundanese::VowelSignPanghulu => 'ᮤ',
Sundanese::VowelSignPanyuku => 'ᮥ',
Sundanese::VowelSignPanaelaeng => 'ᮦ',
Sundanese::VowelSignPanolong => 'ᮧ',
Sundanese::VowelSignPamepet => 'ᮨ',
Sundanese::VowelSignPaneuleung => 'ᮩ',
Sundanese::SignPamaaeh => '᮪',
Sundanese::SignVirama => '᮫',
Sundanese::ConsonantSignPasanganMa => 'ᮬ',
Sundanese::ConsonantSignPasanganWa => 'ᮭ',
Sundanese::LetterKha => 'ᮮ',
Sundanese::LetterSya => 'ᮯ',
Sundanese::DigitZero => '᮰',
Sundanese::DigitOne => '᮱',
Sundanese::DigitTwo => '᮲',
Sundanese::DigitThree => '᮳',
Sundanese::DigitFour => '᮴',
Sundanese::DigitFive => '᮵',
Sundanese::DigitSix => '᮶',
Sundanese::DigitSeven => '᮷',
Sundanese::DigitEight => '᮸',
Sundanese::DigitNine => '᮹',
Sundanese::Avagraha => 'ᮺ',
Sundanese::LetterReu => 'ᮻ',
Sundanese::LetterLeu => 'ᮼ',
Sundanese::LetterBha => 'ᮽ',
Sundanese::LetterFinalK => 'ᮾ',
}
}
}
impl std::convert::TryFrom<char> for Sundanese {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'ᮀ' => Ok(Sundanese::SignPanyecek),
'ᮁ' => Ok(Sundanese::SignPanglayar),
'ᮂ' => Ok(Sundanese::SignPangwisad),
'ᮃ' => Ok(Sundanese::LetterA),
'ᮄ' => Ok(Sundanese::LetterI),
'ᮅ' => Ok(Sundanese::LetterU),
'ᮆ' => Ok(Sundanese::LetterAe),
'ᮇ' => Ok(Sundanese::LetterO),
'ᮈ' => Ok(Sundanese::LetterE),
'ᮉ' => Ok(Sundanese::LetterEu),
'ᮊ' => Ok(Sundanese::LetterKa),
'ᮋ' => Ok(Sundanese::LetterQa),
'ᮌ' => Ok(Sundanese::LetterGa),
'ᮍ' => Ok(Sundanese::LetterNga),
'ᮎ' => Ok(Sundanese::LetterCa),
'ᮏ' => Ok(Sundanese::LetterJa),
'ᮐ' => Ok(Sundanese::LetterZa),
'ᮑ' => Ok(Sundanese::LetterNya),
'ᮒ' => Ok(Sundanese::LetterTa),
'ᮓ' => Ok(Sundanese::LetterDa),
'ᮔ' => Ok(Sundanese::LetterNa),
'ᮕ' => Ok(Sundanese::LetterPa),
'ᮖ' => Ok(Sundanese::LetterFa),
'ᮗ' => Ok(Sundanese::LetterVa),
'ᮘ' => Ok(Sundanese::LetterBa),
'ᮙ' => Ok(Sundanese::LetterMa),
'ᮚ' => Ok(Sundanese::LetterYa),
'ᮛ' => Ok(Sundanese::LetterRa),
'ᮜ' => Ok(Sundanese::LetterLa),
'ᮝ' => Ok(Sundanese::LetterWa),
'ᮞ' => Ok(Sundanese::LetterSa),
'ᮟ' => Ok(Sundanese::LetterXa),
'ᮠ' => Ok(Sundanese::LetterHa),
'ᮡ' => Ok(Sundanese::ConsonantSignPamingkal),
'ᮢ' => Ok(Sundanese::ConsonantSignPanyakra),
'ᮣ' => Ok(Sundanese::ConsonantSignPanyiku),
'ᮤ' => Ok(Sundanese::VowelSignPanghulu),
'ᮥ' => Ok(Sundanese::VowelSignPanyuku),
'ᮦ' => Ok(Sundanese::VowelSignPanaelaeng),
'ᮧ' => Ok(Sundanese::VowelSignPanolong),
'ᮨ' => Ok(Sundanese::VowelSignPamepet),
'ᮩ' => Ok(Sundanese::VowelSignPaneuleung),
'᮪' => Ok(Sundanese::SignPamaaeh),
'᮫' => Ok(Sundanese::SignVirama),
'ᮬ' => Ok(Sundanese::ConsonantSignPasanganMa),
'ᮭ' => Ok(Sundanese::ConsonantSignPasanganWa),
'ᮮ' => Ok(Sundanese::LetterKha),
'ᮯ' => Ok(Sundanese::LetterSya),
'᮰' => Ok(Sundanese::DigitZero),
'᮱' => Ok(Sundanese::DigitOne),
'᮲' => Ok(Sundanese::DigitTwo),
'᮳' => Ok(Sundanese::DigitThree),
'᮴' => Ok(Sundanese::DigitFour),
'᮵' => Ok(Sundanese::DigitFive),
'᮶' => Ok(Sundanese::DigitSix),
'᮷' => Ok(Sundanese::DigitSeven),
'᮸' => Ok(Sundanese::DigitEight),
'᮹' => Ok(Sundanese::DigitNine),
'ᮺ' => Ok(Sundanese::Avagraha),
'ᮻ' => Ok(Sundanese::LetterReu),
'ᮼ' => Ok(Sundanese::LetterLeu),
'ᮽ' => Ok(Sundanese::LetterBha),
'ᮾ' => Ok(Sundanese::LetterFinalK),
_ => Err(()),
}
}
}
impl Into<u32> for Sundanese {
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 Sundanese {
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 Sundanese {
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 Sundanese {
pub fn new() -> Self {
Sundanese::SignPanyecek
}
pub fn name(&self) -> String {
let s = std::format!("Sundanese{:#?}", self);
string_morph::to_sentence_case(&s)
}
}