mod constants {
pub const SIGN_PANYECEK: char = 'ᮀ';
pub const SIGN_PANGLAYAR: char = 'ᮁ';
pub const SIGN_PANGWISAD: char = 'ᮂ';
pub const LETTER_A: char = 'ᮃ';
pub const LETTER_I: char = 'ᮄ';
pub const LETTER_U: char = 'ᮅ';
pub const LETTER_AE: char = 'ᮆ';
pub const LETTER_O: char = 'ᮇ';
pub const LETTER_E: char = 'ᮈ';
pub const LETTER_EU: char = 'ᮉ';
pub const LETTER_KA: char = 'ᮊ';
pub const LETTER_QA: char = 'ᮋ';
pub const LETTER_GA: char = 'ᮌ';
pub const LETTER_NGA: char = 'ᮍ';
pub const LETTER_CA: char = 'ᮎ';
pub const LETTER_JA: char = 'ᮏ';
pub const LETTER_ZA: char = 'ᮐ';
pub const LETTER_NYA: char = 'ᮑ';
pub const LETTER_TA: char = 'ᮒ';
pub const LETTER_DA: char = 'ᮓ';
pub const LETTER_NA: char = 'ᮔ';
pub const LETTER_PA: char = 'ᮕ';
pub const LETTER_FA: char = 'ᮖ';
pub const LETTER_VA: char = 'ᮗ';
pub const LETTER_BA: char = 'ᮘ';
pub const LETTER_MA: char = 'ᮙ';
pub const LETTER_YA: char = 'ᮚ';
pub const LETTER_RA: char = 'ᮛ';
pub const LETTER_LA: char = 'ᮜ';
pub const LETTER_WA: char = 'ᮝ';
pub const LETTER_SA: char = 'ᮞ';
pub const LETTER_XA: char = 'ᮟ';
pub const LETTER_HA: char = 'ᮠ';
pub const CONSONANT_SIGN_PAMINGKAL: char = 'ᮡ';
pub const CONSONANT_SIGN_PANYAKRA: char = 'ᮢ';
pub const CONSONANT_SIGN_PANYIKU: char = 'ᮣ';
pub const VOWEL_SIGN_PANGHULU: char = 'ᮤ';
pub const VOWEL_SIGN_PANYUKU: char = 'ᮥ';
pub const VOWEL_SIGN_PANAELAENG: char = 'ᮦ';
pub const VOWEL_SIGN_PANOLONG: char = 'ᮧ';
pub const VOWEL_SIGN_PAMEPET: char = 'ᮨ';
pub const VOWEL_SIGN_PANEULEUNG: char = 'ᮩ';
pub const SIGN_PAMAAEH: char = '᮪';
pub const SIGN_VIRAMA: char = '᮫';
pub const CONSONANT_SIGN_PASANGAN_MA: char = 'ᮬ';
pub const CONSONANT_SIGN_PASANGAN_WA: char = 'ᮭ';
pub const LETTER_KHA: char = 'ᮮ';
pub const LETTER_SYA: 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 = '᮹';
pub const AVAGRAHA: char = 'ᮺ';
pub const LETTER_REU: char = 'ᮻ';
pub const LETTER_LEU: char = 'ᮼ';
pub const LETTER_BHA: char = 'ᮽ';
pub const LETTER_FINAL_K: char = 'ᮾ';
}
#[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 {
use constants::*;
match self {
Sundanese::SignPanyecek => SIGN_PANYECEK,
Sundanese::SignPanglayar => SIGN_PANGLAYAR,
Sundanese::SignPangwisad => SIGN_PANGWISAD,
Sundanese::LetterA => LETTER_A,
Sundanese::LetterI => LETTER_I,
Sundanese::LetterU => LETTER_U,
Sundanese::LetterAe => LETTER_AE,
Sundanese::LetterO => LETTER_O,
Sundanese::LetterE => LETTER_E,
Sundanese::LetterEu => LETTER_EU,
Sundanese::LetterKa => LETTER_KA,
Sundanese::LetterQa => LETTER_QA,
Sundanese::LetterGa => LETTER_GA,
Sundanese::LetterNga => LETTER_NGA,
Sundanese::LetterCa => LETTER_CA,
Sundanese::LetterJa => LETTER_JA,
Sundanese::LetterZa => LETTER_ZA,
Sundanese::LetterNya => LETTER_NYA,
Sundanese::LetterTa => LETTER_TA,
Sundanese::LetterDa => LETTER_DA,
Sundanese::LetterNa => LETTER_NA,
Sundanese::LetterPa => LETTER_PA,
Sundanese::LetterFa => LETTER_FA,
Sundanese::LetterVa => LETTER_VA,
Sundanese::LetterBa => LETTER_BA,
Sundanese::LetterMa => LETTER_MA,
Sundanese::LetterYa => LETTER_YA,
Sundanese::LetterRa => LETTER_RA,
Sundanese::LetterLa => LETTER_LA,
Sundanese::LetterWa => LETTER_WA,
Sundanese::LetterSa => LETTER_SA,
Sundanese::LetterXa => LETTER_XA,
Sundanese::LetterHa => LETTER_HA,
Sundanese::ConsonantSignPamingkal => CONSONANT_SIGN_PAMINGKAL,
Sundanese::ConsonantSignPanyakra => CONSONANT_SIGN_PANYAKRA,
Sundanese::ConsonantSignPanyiku => CONSONANT_SIGN_PANYIKU,
Sundanese::VowelSignPanghulu => VOWEL_SIGN_PANGHULU,
Sundanese::VowelSignPanyuku => VOWEL_SIGN_PANYUKU,
Sundanese::VowelSignPanaelaeng => VOWEL_SIGN_PANAELAENG,
Sundanese::VowelSignPanolong => VOWEL_SIGN_PANOLONG,
Sundanese::VowelSignPamepet => VOWEL_SIGN_PAMEPET,
Sundanese::VowelSignPaneuleung => VOWEL_SIGN_PANEULEUNG,
Sundanese::SignPamaaeh => SIGN_PAMAAEH,
Sundanese::SignVirama => SIGN_VIRAMA,
Sundanese::ConsonantSignPasanganMa => CONSONANT_SIGN_PASANGAN_MA,
Sundanese::ConsonantSignPasanganWa => CONSONANT_SIGN_PASANGAN_WA,
Sundanese::LetterKha => LETTER_KHA,
Sundanese::LetterSya => LETTER_SYA,
Sundanese::DigitZero => DIGIT_ZERO,
Sundanese::DigitOne => DIGIT_ONE,
Sundanese::DigitTwo => DIGIT_TWO,
Sundanese::DigitThree => DIGIT_THREE,
Sundanese::DigitFour => DIGIT_FOUR,
Sundanese::DigitFive => DIGIT_FIVE,
Sundanese::DigitSix => DIGIT_SIX,
Sundanese::DigitSeven => DIGIT_SEVEN,
Sundanese::DigitEight => DIGIT_EIGHT,
Sundanese::DigitNine => DIGIT_NINE,
Sundanese::Avagraha => AVAGRAHA,
Sundanese::LetterReu => LETTER_REU,
Sundanese::LetterLeu => LETTER_LEU,
Sundanese::LetterBha => LETTER_BHA,
Sundanese::LetterFinalK => LETTER_FINAL_K,
}
}
}
impl std::convert::TryFrom<char> for Sundanese {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
SIGN_PANYECEK => Ok(Sundanese::SignPanyecek),
SIGN_PANGLAYAR => Ok(Sundanese::SignPanglayar),
SIGN_PANGWISAD => Ok(Sundanese::SignPangwisad),
LETTER_A => Ok(Sundanese::LetterA),
LETTER_I => Ok(Sundanese::LetterI),
LETTER_U => Ok(Sundanese::LetterU),
LETTER_AE => Ok(Sundanese::LetterAe),
LETTER_O => Ok(Sundanese::LetterO),
LETTER_E => Ok(Sundanese::LetterE),
LETTER_EU => Ok(Sundanese::LetterEu),
LETTER_KA => Ok(Sundanese::LetterKa),
LETTER_QA => Ok(Sundanese::LetterQa),
LETTER_GA => Ok(Sundanese::LetterGa),
LETTER_NGA => Ok(Sundanese::LetterNga),
LETTER_CA => Ok(Sundanese::LetterCa),
LETTER_JA => Ok(Sundanese::LetterJa),
LETTER_ZA => Ok(Sundanese::LetterZa),
LETTER_NYA => Ok(Sundanese::LetterNya),
LETTER_TA => Ok(Sundanese::LetterTa),
LETTER_DA => Ok(Sundanese::LetterDa),
LETTER_NA => Ok(Sundanese::LetterNa),
LETTER_PA => Ok(Sundanese::LetterPa),
LETTER_FA => Ok(Sundanese::LetterFa),
LETTER_VA => Ok(Sundanese::LetterVa),
LETTER_BA => Ok(Sundanese::LetterBa),
LETTER_MA => Ok(Sundanese::LetterMa),
LETTER_YA => Ok(Sundanese::LetterYa),
LETTER_RA => Ok(Sundanese::LetterRa),
LETTER_LA => Ok(Sundanese::LetterLa),
LETTER_WA => Ok(Sundanese::LetterWa),
LETTER_SA => Ok(Sundanese::LetterSa),
LETTER_XA => Ok(Sundanese::LetterXa),
LETTER_HA => Ok(Sundanese::LetterHa),
CONSONANT_SIGN_PAMINGKAL => Ok(Sundanese::ConsonantSignPamingkal),
CONSONANT_SIGN_PANYAKRA => Ok(Sundanese::ConsonantSignPanyakra),
CONSONANT_SIGN_PANYIKU => Ok(Sundanese::ConsonantSignPanyiku),
VOWEL_SIGN_PANGHULU => Ok(Sundanese::VowelSignPanghulu),
VOWEL_SIGN_PANYUKU => Ok(Sundanese::VowelSignPanyuku),
VOWEL_SIGN_PANAELAENG => Ok(Sundanese::VowelSignPanaelaeng),
VOWEL_SIGN_PANOLONG => Ok(Sundanese::VowelSignPanolong),
VOWEL_SIGN_PAMEPET => Ok(Sundanese::VowelSignPamepet),
VOWEL_SIGN_PANEULEUNG => Ok(Sundanese::VowelSignPaneuleung),
SIGN_PAMAAEH => Ok(Sundanese::SignPamaaeh),
SIGN_VIRAMA => Ok(Sundanese::SignVirama),
CONSONANT_SIGN_PASANGAN_MA => Ok(Sundanese::ConsonantSignPasanganMa),
CONSONANT_SIGN_PASANGAN_WA => Ok(Sundanese::ConsonantSignPasanganWa),
LETTER_KHA => Ok(Sundanese::LetterKha),
LETTER_SYA => Ok(Sundanese::LetterSya),
DIGIT_ZERO => Ok(Sundanese::DigitZero),
DIGIT_ONE => Ok(Sundanese::DigitOne),
DIGIT_TWO => Ok(Sundanese::DigitTwo),
DIGIT_THREE => Ok(Sundanese::DigitThree),
DIGIT_FOUR => Ok(Sundanese::DigitFour),
DIGIT_FIVE => Ok(Sundanese::DigitFive),
DIGIT_SIX => Ok(Sundanese::DigitSix),
DIGIT_SEVEN => Ok(Sundanese::DigitSeven),
DIGIT_EIGHT => Ok(Sundanese::DigitEight),
DIGIT_NINE => Ok(Sundanese::DigitNine),
AVAGRAHA => Ok(Sundanese::Avagraha),
LETTER_REU => Ok(Sundanese::LetterReu),
LETTER_LEU => Ok(Sundanese::LetterLeu),
LETTER_BHA => Ok(Sundanese::LetterBha),
LETTER_FINAL_K => 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) -> &str {
match self {
Sundanese::SignPanyecek => "sundanese sign panyecek",
Sundanese::SignPanglayar => "sundanese sign panglayar",
Sundanese::SignPangwisad => "sundanese sign pangwisad",
Sundanese::LetterA => "sundanese letter a",
Sundanese::LetterI => "sundanese letter i",
Sundanese::LetterU => "sundanese letter u",
Sundanese::LetterAe => "sundanese letter ae",
Sundanese::LetterO => "sundanese letter o",
Sundanese::LetterE => "sundanese letter e",
Sundanese::LetterEu => "sundanese letter eu",
Sundanese::LetterKa => "sundanese letter ka",
Sundanese::LetterQa => "sundanese letter qa",
Sundanese::LetterGa => "sundanese letter ga",
Sundanese::LetterNga => "sundanese letter nga",
Sundanese::LetterCa => "sundanese letter ca",
Sundanese::LetterJa => "sundanese letter ja",
Sundanese::LetterZa => "sundanese letter za",
Sundanese::LetterNya => "sundanese letter nya",
Sundanese::LetterTa => "sundanese letter ta",
Sundanese::LetterDa => "sundanese letter da",
Sundanese::LetterNa => "sundanese letter na",
Sundanese::LetterPa => "sundanese letter pa",
Sundanese::LetterFa => "sundanese letter fa",
Sundanese::LetterVa => "sundanese letter va",
Sundanese::LetterBa => "sundanese letter ba",
Sundanese::LetterMa => "sundanese letter ma",
Sundanese::LetterYa => "sundanese letter ya",
Sundanese::LetterRa => "sundanese letter ra",
Sundanese::LetterLa => "sundanese letter la",
Sundanese::LetterWa => "sundanese letter wa",
Sundanese::LetterSa => "sundanese letter sa",
Sundanese::LetterXa => "sundanese letter xa",
Sundanese::LetterHa => "sundanese letter ha",
Sundanese::ConsonantSignPamingkal => "sundanese consonant sign pamingkal",
Sundanese::ConsonantSignPanyakra => "sundanese consonant sign panyakra",
Sundanese::ConsonantSignPanyiku => "sundanese consonant sign panyiku",
Sundanese::VowelSignPanghulu => "sundanese vowel sign panghulu",
Sundanese::VowelSignPanyuku => "sundanese vowel sign panyuku",
Sundanese::VowelSignPanaelaeng => "sundanese vowel sign panaelaeng",
Sundanese::VowelSignPanolong => "sundanese vowel sign panolong",
Sundanese::VowelSignPamepet => "sundanese vowel sign pamepet",
Sundanese::VowelSignPaneuleung => "sundanese vowel sign paneuleung",
Sundanese::SignPamaaeh => "sundanese sign pamaaeh",
Sundanese::SignVirama => "sundanese sign virama",
Sundanese::ConsonantSignPasanganMa => "sundanese consonant sign pasangan ma",
Sundanese::ConsonantSignPasanganWa => "sundanese consonant sign pasangan wa",
Sundanese::LetterKha => "sundanese letter kha",
Sundanese::LetterSya => "sundanese letter sya",
Sundanese::DigitZero => "sundanese digit zero",
Sundanese::DigitOne => "sundanese digit one",
Sundanese::DigitTwo => "sundanese digit two",
Sundanese::DigitThree => "sundanese digit three",
Sundanese::DigitFour => "sundanese digit four",
Sundanese::DigitFive => "sundanese digit five",
Sundanese::DigitSix => "sundanese digit six",
Sundanese::DigitSeven => "sundanese digit seven",
Sundanese::DigitEight => "sundanese digit eight",
Sundanese::DigitNine => "sundanese digit nine",
Sundanese::Avagraha => "sundanese avagraha",
Sundanese::LetterReu => "sundanese letter reu",
Sundanese::LetterLeu => "sundanese letter leu",
Sundanese::LetterBha => "sundanese letter bha",
Sundanese::LetterFinalK => "sundanese letter final k",
}
}
}