#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Javanese {
SignPanyangga,
SignCecak,
SignLayar,
SignWignyan,
LetterA,
LetterIKawi,
LetterI,
LetterIi,
LetterU,
LetterPaCerek,
LetterNgaLelet,
LetterNgaLeletRaswadi,
LetterE,
LetterAi,
LetterO,
LetterKa,
LetterKaSasak,
LetterKaMurda,
LetterGa,
LetterGaMurda,
LetterNga,
LetterCa,
LetterCaMurda,
LetterJa,
LetterNyaMurda,
LetterJaMahaprana,
LetterNya,
LetterTta,
LetterTtaMahaprana,
LetterDda,
LetterDdaMahaprana,
LetterNaMurda,
LetterTa,
LetterTaMurda,
LetterDa,
LetterDaMahaprana,
LetterNa,
LetterPa,
LetterPaMurda,
LetterBa,
LetterBaMurda,
LetterMa,
LetterYa,
LetterRa,
LetterRaAgung,
LetterLa,
LetterWa,
LetterSaMurda,
LetterSaMahaprana,
LetterSa,
LetterHa,
SignCecakTelu,
VowelSignTarung,
VowelSignTolong,
VowelSignWulu,
VowelSignWuluMelik,
VowelSignSuku,
VowelSignSukuMendut,
VowelSignTaling,
VowelSignDirgaMure,
VowelSignPepet,
ConsonantSignKeret,
ConsonantSignPengkal,
ConsonantSignCakra,
Pangkon,
LeftRerenggan,
RightRerenggan,
PadaAndap,
PadaMadya,
PadaLuhur,
PadaWindu,
PadaPangkat,
PadaLingsa,
PadaLungsi,
PadaAdeg,
PadaAdegAdeg,
PadaPiseleh,
TurnedPadaPiseleh,
Pangrangkep,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
PadaTirtaTumetes,
}
impl Into<char> for Javanese {
fn into(self) -> char {
match self {
Javanese::SignPanyangga => 'ꦀ',
Javanese::SignCecak => 'ꦁ',
Javanese::SignLayar => 'ꦂ',
Javanese::SignWignyan => 'ꦃ',
Javanese::LetterA => 'ꦄ',
Javanese::LetterIKawi => 'ꦅ',
Javanese::LetterI => 'ꦆ',
Javanese::LetterIi => 'ꦇ',
Javanese::LetterU => 'ꦈ',
Javanese::LetterPaCerek => 'ꦉ',
Javanese::LetterNgaLelet => 'ꦊ',
Javanese::LetterNgaLeletRaswadi => 'ꦋ',
Javanese::LetterE => 'ꦌ',
Javanese::LetterAi => 'ꦍ',
Javanese::LetterO => 'ꦎ',
Javanese::LetterKa => 'ꦏ',
Javanese::LetterKaSasak => 'ꦐ',
Javanese::LetterKaMurda => 'ꦑ',
Javanese::LetterGa => 'ꦒ',
Javanese::LetterGaMurda => 'ꦓ',
Javanese::LetterNga => 'ꦔ',
Javanese::LetterCa => 'ꦕ',
Javanese::LetterCaMurda => 'ꦖ',
Javanese::LetterJa => 'ꦗ',
Javanese::LetterNyaMurda => 'ꦘ',
Javanese::LetterJaMahaprana => 'ꦙ',
Javanese::LetterNya => 'ꦚ',
Javanese::LetterTta => 'ꦛ',
Javanese::LetterTtaMahaprana => 'ꦜ',
Javanese::LetterDda => 'ꦝ',
Javanese::LetterDdaMahaprana => 'ꦞ',
Javanese::LetterNaMurda => 'ꦟ',
Javanese::LetterTa => 'ꦠ',
Javanese::LetterTaMurda => 'ꦡ',
Javanese::LetterDa => 'ꦢ',
Javanese::LetterDaMahaprana => 'ꦣ',
Javanese::LetterNa => 'ꦤ',
Javanese::LetterPa => 'ꦥ',
Javanese::LetterPaMurda => 'ꦦ',
Javanese::LetterBa => 'ꦧ',
Javanese::LetterBaMurda => 'ꦨ',
Javanese::LetterMa => 'ꦩ',
Javanese::LetterYa => 'ꦪ',
Javanese::LetterRa => 'ꦫ',
Javanese::LetterRaAgung => 'ꦬ',
Javanese::LetterLa => 'ꦭ',
Javanese::LetterWa => 'ꦮ',
Javanese::LetterSaMurda => 'ꦯ',
Javanese::LetterSaMahaprana => 'ꦰ',
Javanese::LetterSa => 'ꦱ',
Javanese::LetterHa => 'ꦲ',
Javanese::SignCecakTelu => '꦳',
Javanese::VowelSignTarung => 'ꦴ',
Javanese::VowelSignTolong => 'ꦵ',
Javanese::VowelSignWulu => 'ꦶ',
Javanese::VowelSignWuluMelik => 'ꦷ',
Javanese::VowelSignSuku => 'ꦸ',
Javanese::VowelSignSukuMendut => 'ꦹ',
Javanese::VowelSignTaling => 'ꦺ',
Javanese::VowelSignDirgaMure => 'ꦻ',
Javanese::VowelSignPepet => 'ꦼ',
Javanese::ConsonantSignKeret => 'ꦽ',
Javanese::ConsonantSignPengkal => 'ꦾ',
Javanese::ConsonantSignCakra => 'ꦿ',
Javanese::Pangkon => '꧀',
Javanese::LeftRerenggan => '꧁',
Javanese::RightRerenggan => '꧂',
Javanese::PadaAndap => '꧃',
Javanese::PadaMadya => '꧄',
Javanese::PadaLuhur => '꧅',
Javanese::PadaWindu => '꧆',
Javanese::PadaPangkat => '꧇',
Javanese::PadaLingsa => '꧈',
Javanese::PadaLungsi => '꧉',
Javanese::PadaAdeg => '꧊',
Javanese::PadaAdegAdeg => '꧋',
Javanese::PadaPiseleh => '꧌',
Javanese::TurnedPadaPiseleh => '꧍',
Javanese::Pangrangkep => 'ꧏ',
Javanese::DigitZero => '꧐',
Javanese::DigitOne => '꧑',
Javanese::DigitTwo => '꧒',
Javanese::DigitThree => '꧓',
Javanese::DigitFour => '꧔',
Javanese::DigitFive => '꧕',
Javanese::DigitSix => '꧖',
Javanese::DigitSeven => '꧗',
Javanese::DigitEight => '꧘',
Javanese::DigitNine => '꧙',
Javanese::PadaTirtaTumetes => '꧞',
}
}
}
impl std::convert::TryFrom<char> for Javanese {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'ꦀ' => Ok(Javanese::SignPanyangga),
'ꦁ' => Ok(Javanese::SignCecak),
'ꦂ' => Ok(Javanese::SignLayar),
'ꦃ' => Ok(Javanese::SignWignyan),
'ꦄ' => Ok(Javanese::LetterA),
'ꦅ' => Ok(Javanese::LetterIKawi),
'ꦆ' => Ok(Javanese::LetterI),
'ꦇ' => Ok(Javanese::LetterIi),
'ꦈ' => Ok(Javanese::LetterU),
'ꦉ' => Ok(Javanese::LetterPaCerek),
'ꦊ' => Ok(Javanese::LetterNgaLelet),
'ꦋ' => Ok(Javanese::LetterNgaLeletRaswadi),
'ꦌ' => Ok(Javanese::LetterE),
'ꦍ' => Ok(Javanese::LetterAi),
'ꦎ' => Ok(Javanese::LetterO),
'ꦏ' => Ok(Javanese::LetterKa),
'ꦐ' => Ok(Javanese::LetterKaSasak),
'ꦑ' => Ok(Javanese::LetterKaMurda),
'ꦒ' => Ok(Javanese::LetterGa),
'ꦓ' => Ok(Javanese::LetterGaMurda),
'ꦔ' => Ok(Javanese::LetterNga),
'ꦕ' => Ok(Javanese::LetterCa),
'ꦖ' => Ok(Javanese::LetterCaMurda),
'ꦗ' => Ok(Javanese::LetterJa),
'ꦘ' => Ok(Javanese::LetterNyaMurda),
'ꦙ' => Ok(Javanese::LetterJaMahaprana),
'ꦚ' => Ok(Javanese::LetterNya),
'ꦛ' => Ok(Javanese::LetterTta),
'ꦜ' => Ok(Javanese::LetterTtaMahaprana),
'ꦝ' => Ok(Javanese::LetterDda),
'ꦞ' => Ok(Javanese::LetterDdaMahaprana),
'ꦟ' => Ok(Javanese::LetterNaMurda),
'ꦠ' => Ok(Javanese::LetterTa),
'ꦡ' => Ok(Javanese::LetterTaMurda),
'ꦢ' => Ok(Javanese::LetterDa),
'ꦣ' => Ok(Javanese::LetterDaMahaprana),
'ꦤ' => Ok(Javanese::LetterNa),
'ꦥ' => Ok(Javanese::LetterPa),
'ꦦ' => Ok(Javanese::LetterPaMurda),
'ꦧ' => Ok(Javanese::LetterBa),
'ꦨ' => Ok(Javanese::LetterBaMurda),
'ꦩ' => Ok(Javanese::LetterMa),
'ꦪ' => Ok(Javanese::LetterYa),
'ꦫ' => Ok(Javanese::LetterRa),
'ꦬ' => Ok(Javanese::LetterRaAgung),
'ꦭ' => Ok(Javanese::LetterLa),
'ꦮ' => Ok(Javanese::LetterWa),
'ꦯ' => Ok(Javanese::LetterSaMurda),
'ꦰ' => Ok(Javanese::LetterSaMahaprana),
'ꦱ' => Ok(Javanese::LetterSa),
'ꦲ' => Ok(Javanese::LetterHa),
'꦳' => Ok(Javanese::SignCecakTelu),
'ꦴ' => Ok(Javanese::VowelSignTarung),
'ꦵ' => Ok(Javanese::VowelSignTolong),
'ꦶ' => Ok(Javanese::VowelSignWulu),
'ꦷ' => Ok(Javanese::VowelSignWuluMelik),
'ꦸ' => Ok(Javanese::VowelSignSuku),
'ꦹ' => Ok(Javanese::VowelSignSukuMendut),
'ꦺ' => Ok(Javanese::VowelSignTaling),
'ꦻ' => Ok(Javanese::VowelSignDirgaMure),
'ꦼ' => Ok(Javanese::VowelSignPepet),
'ꦽ' => Ok(Javanese::ConsonantSignKeret),
'ꦾ' => Ok(Javanese::ConsonantSignPengkal),
'ꦿ' => Ok(Javanese::ConsonantSignCakra),
'꧀' => Ok(Javanese::Pangkon),
'꧁' => Ok(Javanese::LeftRerenggan),
'꧂' => Ok(Javanese::RightRerenggan),
'꧃' => Ok(Javanese::PadaAndap),
'꧄' => Ok(Javanese::PadaMadya),
'꧅' => Ok(Javanese::PadaLuhur),
'꧆' => Ok(Javanese::PadaWindu),
'꧇' => Ok(Javanese::PadaPangkat),
'꧈' => Ok(Javanese::PadaLingsa),
'꧉' => Ok(Javanese::PadaLungsi),
'꧊' => Ok(Javanese::PadaAdeg),
'꧋' => Ok(Javanese::PadaAdegAdeg),
'꧌' => Ok(Javanese::PadaPiseleh),
'꧍' => Ok(Javanese::TurnedPadaPiseleh),
'ꧏ' => Ok(Javanese::Pangrangkep),
'꧐' => Ok(Javanese::DigitZero),
'꧑' => Ok(Javanese::DigitOne),
'꧒' => Ok(Javanese::DigitTwo),
'꧓' => Ok(Javanese::DigitThree),
'꧔' => Ok(Javanese::DigitFour),
'꧕' => Ok(Javanese::DigitFive),
'꧖' => Ok(Javanese::DigitSix),
'꧗' => Ok(Javanese::DigitSeven),
'꧘' => Ok(Javanese::DigitEight),
'꧙' => Ok(Javanese::DigitNine),
'꧞' => Ok(Javanese::PadaTirtaTumetes),
_ => Err(()),
}
}
}
impl Into<u32> for Javanese {
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 Javanese {
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 Javanese {
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 Javanese {
pub fn new() -> Self {
Javanese::SignPanyangga
}
pub fn name(&self) -> String {
let s = std::format!("Javanese{:#?}", self);
string_morph::to_sentence_case(&s)
}
}