#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum HanifiRohingya {
LetterA,
LetterBa,
LetterPa,
LetterTa,
LetterTta,
LetterJa,
LetterCa,
LetterHa,
LetterKha,
LetterFa,
LetterDa,
LetterDda,
LetterRa,
LetterRra,
LetterZa,
LetterSa,
LetterSha,
LetterKa,
LetterGa,
LetterLa,
LetterMa,
LetterNa,
LetterWa,
LetterKinnaWa,
LetterYa,
LetterKinnaYa,
LetterNga,
LetterNya,
LetterVa,
VowelA,
VowelI,
VowelU,
VowelE,
VowelO,
MarkSakin,
MarkNaKhonna,
SignHarbahay,
SignTahala,
SignTana,
SignTassi,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
}
impl Into<char> for HanifiRohingya {
fn into(self) -> char {
match self {
HanifiRohingya::LetterA => '𐴀',
HanifiRohingya::LetterBa => '𐴁',
HanifiRohingya::LetterPa => '𐴂',
HanifiRohingya::LetterTa => '𐴃',
HanifiRohingya::LetterTta => '𐴄',
HanifiRohingya::LetterJa => '𐴅',
HanifiRohingya::LetterCa => '𐴆',
HanifiRohingya::LetterHa => '𐴇',
HanifiRohingya::LetterKha => '𐴈',
HanifiRohingya::LetterFa => '𐴉',
HanifiRohingya::LetterDa => '𐴊',
HanifiRohingya::LetterDda => '𐴋',
HanifiRohingya::LetterRa => '𐴌',
HanifiRohingya::LetterRra => '𐴍',
HanifiRohingya::LetterZa => '𐴎',
HanifiRohingya::LetterSa => '𐴏',
HanifiRohingya::LetterSha => '𐴐',
HanifiRohingya::LetterKa => '𐴑',
HanifiRohingya::LetterGa => '𐴒',
HanifiRohingya::LetterLa => '𐴓',
HanifiRohingya::LetterMa => '𐴔',
HanifiRohingya::LetterNa => '𐴕',
HanifiRohingya::LetterWa => '𐴖',
HanifiRohingya::LetterKinnaWa => '𐴗',
HanifiRohingya::LetterYa => '𐴘',
HanifiRohingya::LetterKinnaYa => '𐴙',
HanifiRohingya::LetterNga => '𐴚',
HanifiRohingya::LetterNya => '𐴛',
HanifiRohingya::LetterVa => '𐴜',
HanifiRohingya::VowelA => '𐴝',
HanifiRohingya::VowelI => '𐴞',
HanifiRohingya::VowelU => '𐴟',
HanifiRohingya::VowelE => '𐴠',
HanifiRohingya::VowelO => '𐴡',
HanifiRohingya::MarkSakin => '𐴢',
HanifiRohingya::MarkNaKhonna => '𐴣',
HanifiRohingya::SignHarbahay => '𐴤',
HanifiRohingya::SignTahala => '𐴥',
HanifiRohingya::SignTana => '𐴦',
HanifiRohingya::SignTassi => '𐴧',
HanifiRohingya::DigitZero => '𐴰',
HanifiRohingya::DigitOne => '𐴱',
HanifiRohingya::DigitTwo => '𐴲',
HanifiRohingya::DigitThree => '𐴳',
HanifiRohingya::DigitFour => '𐴴',
HanifiRohingya::DigitFive => '𐴵',
HanifiRohingya::DigitSix => '𐴶',
HanifiRohingya::DigitSeven => '𐴷',
HanifiRohingya::DigitEight => '𐴸',
HanifiRohingya::DigitNine => '𐴹',
}
}
}
impl std::convert::TryFrom<char> for HanifiRohingya {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'𐴀' => Ok(HanifiRohingya::LetterA),
'𐴁' => Ok(HanifiRohingya::LetterBa),
'𐴂' => Ok(HanifiRohingya::LetterPa),
'𐴃' => Ok(HanifiRohingya::LetterTa),
'𐴄' => Ok(HanifiRohingya::LetterTta),
'𐴅' => Ok(HanifiRohingya::LetterJa),
'𐴆' => Ok(HanifiRohingya::LetterCa),
'𐴇' => Ok(HanifiRohingya::LetterHa),
'𐴈' => Ok(HanifiRohingya::LetterKha),
'𐴉' => Ok(HanifiRohingya::LetterFa),
'𐴊' => Ok(HanifiRohingya::LetterDa),
'𐴋' => Ok(HanifiRohingya::LetterDda),
'𐴌' => Ok(HanifiRohingya::LetterRa),
'𐴍' => Ok(HanifiRohingya::LetterRra),
'𐴎' => Ok(HanifiRohingya::LetterZa),
'𐴏' => Ok(HanifiRohingya::LetterSa),
'𐴐' => Ok(HanifiRohingya::LetterSha),
'𐴑' => Ok(HanifiRohingya::LetterKa),
'𐴒' => Ok(HanifiRohingya::LetterGa),
'𐴓' => Ok(HanifiRohingya::LetterLa),
'𐴔' => Ok(HanifiRohingya::LetterMa),
'𐴕' => Ok(HanifiRohingya::LetterNa),
'𐴖' => Ok(HanifiRohingya::LetterWa),
'𐴗' => Ok(HanifiRohingya::LetterKinnaWa),
'𐴘' => Ok(HanifiRohingya::LetterYa),
'𐴙' => Ok(HanifiRohingya::LetterKinnaYa),
'𐴚' => Ok(HanifiRohingya::LetterNga),
'𐴛' => Ok(HanifiRohingya::LetterNya),
'𐴜' => Ok(HanifiRohingya::LetterVa),
'𐴝' => Ok(HanifiRohingya::VowelA),
'𐴞' => Ok(HanifiRohingya::VowelI),
'𐴟' => Ok(HanifiRohingya::VowelU),
'𐴠' => Ok(HanifiRohingya::VowelE),
'𐴡' => Ok(HanifiRohingya::VowelO),
'𐴢' => Ok(HanifiRohingya::MarkSakin),
'𐴣' => Ok(HanifiRohingya::MarkNaKhonna),
'𐴤' => Ok(HanifiRohingya::SignHarbahay),
'𐴥' => Ok(HanifiRohingya::SignTahala),
'𐴦' => Ok(HanifiRohingya::SignTana),
'𐴧' => Ok(HanifiRohingya::SignTassi),
'𐴰' => Ok(HanifiRohingya::DigitZero),
'𐴱' => Ok(HanifiRohingya::DigitOne),
'𐴲' => Ok(HanifiRohingya::DigitTwo),
'𐴳' => Ok(HanifiRohingya::DigitThree),
'𐴴' => Ok(HanifiRohingya::DigitFour),
'𐴵' => Ok(HanifiRohingya::DigitFive),
'𐴶' => Ok(HanifiRohingya::DigitSix),
'𐴷' => Ok(HanifiRohingya::DigitSeven),
'𐴸' => Ok(HanifiRohingya::DigitEight),
'𐴹' => Ok(HanifiRohingya::DigitNine),
_ => Err(()),
}
}
}
impl Into<u32> for HanifiRohingya {
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 HanifiRohingya {
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 HanifiRohingya {
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 HanifiRohingya {
pub fn new() -> Self {
HanifiRohingya::LetterA
}
pub fn name(&self) -> String {
let s = std::format!("HanifiRohingya{:#?}", self);
string_morph::to_sentence_case(&s)
}
}