#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Adlam {
CapitalLetterAlif,
CapitalLetterDaali,
CapitalLetterLaam,
CapitalLetterMiim,
CapitalLetterBa,
CapitalLetterSinnyiiyhe,
CapitalLetterPe,
CapitalLetterBhe,
CapitalLetterRa,
CapitalLetterE,
CapitalLetterFa,
CapitalLetterI,
CapitalLetterO,
CapitalLetterDha,
CapitalLetterYhe,
CapitalLetterWaw,
CapitalLetterNun,
CapitalLetterKaf,
CapitalLetterYa,
CapitalLetterU,
CapitalLetterJiim,
CapitalLetterChi,
CapitalLetterHa,
CapitalLetterQaaf,
CapitalLetterGa,
CapitalLetterNya,
CapitalLetterTu,
CapitalLetterNha,
CapitalLetterVa,
CapitalLetterKha,
CapitalLetterGbe,
CapitalLetterZal,
CapitalLetterKpo,
CapitalLetterSha,
SmallLetterAlif,
SmallLetterDaali,
SmallLetterLaam,
SmallLetterMiim,
SmallLetterBa,
SmallLetterSinnyiiyhe,
SmallLetterPe,
SmallLetterBhe,
SmallLetterRa,
SmallLetterE,
SmallLetterFa,
SmallLetterI,
SmallLetterO,
SmallLetterDha,
SmallLetterYhe,
SmallLetterWaw,
SmallLetterNun,
SmallLetterKaf,
SmallLetterYa,
SmallLetterU,
SmallLetterJiim,
SmallLetterChi,
SmallLetterHa,
SmallLetterQaaf,
SmallLetterGa,
SmallLetterNya,
SmallLetterTu,
SmallLetterNha,
SmallLetterVa,
SmallLetterKha,
SmallLetterGbe,
SmallLetterZal,
SmallLetterKpo,
SmallLetterSha,
AlifLengthener,
VowelLengthener,
GeminationMark,
Hamza,
ConsonantModifier,
GeminateConsonantModifier,
Nukta,
NasalizationMark,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
InitialExclamationMark,
}
impl Into<char> for Adlam {
fn into(self) -> char {
match self {
Adlam::CapitalLetterAlif => '𞤀',
Adlam::CapitalLetterDaali => '𞤁',
Adlam::CapitalLetterLaam => '𞤂',
Adlam::CapitalLetterMiim => '𞤃',
Adlam::CapitalLetterBa => '𞤄',
Adlam::CapitalLetterSinnyiiyhe => '𞤅',
Adlam::CapitalLetterPe => '𞤆',
Adlam::CapitalLetterBhe => '𞤇',
Adlam::CapitalLetterRa => '𞤈',
Adlam::CapitalLetterE => '𞤉',
Adlam::CapitalLetterFa => '𞤊',
Adlam::CapitalLetterI => '𞤋',
Adlam::CapitalLetterO => '𞤌',
Adlam::CapitalLetterDha => '𞤍',
Adlam::CapitalLetterYhe => '𞤎',
Adlam::CapitalLetterWaw => '𞤏',
Adlam::CapitalLetterNun => '𞤐',
Adlam::CapitalLetterKaf => '𞤑',
Adlam::CapitalLetterYa => '𞤒',
Adlam::CapitalLetterU => '𞤓',
Adlam::CapitalLetterJiim => '𞤔',
Adlam::CapitalLetterChi => '𞤕',
Adlam::CapitalLetterHa => '𞤖',
Adlam::CapitalLetterQaaf => '𞤗',
Adlam::CapitalLetterGa => '𞤘',
Adlam::CapitalLetterNya => '𞤙',
Adlam::CapitalLetterTu => '𞤚',
Adlam::CapitalLetterNha => '𞤛',
Adlam::CapitalLetterVa => '𞤜',
Adlam::CapitalLetterKha => '𞤝',
Adlam::CapitalLetterGbe => '𞤞',
Adlam::CapitalLetterZal => '𞤟',
Adlam::CapitalLetterKpo => '𞤠',
Adlam::CapitalLetterSha => '𞤡',
Adlam::SmallLetterAlif => '𞤢',
Adlam::SmallLetterDaali => '𞤣',
Adlam::SmallLetterLaam => '𞤤',
Adlam::SmallLetterMiim => '𞤥',
Adlam::SmallLetterBa => '𞤦',
Adlam::SmallLetterSinnyiiyhe => '𞤧',
Adlam::SmallLetterPe => '𞤨',
Adlam::SmallLetterBhe => '𞤩',
Adlam::SmallLetterRa => '𞤪',
Adlam::SmallLetterE => '𞤫',
Adlam::SmallLetterFa => '𞤬',
Adlam::SmallLetterI => '𞤭',
Adlam::SmallLetterO => '𞤮',
Adlam::SmallLetterDha => '𞤯',
Adlam::SmallLetterYhe => '𞤰',
Adlam::SmallLetterWaw => '𞤱',
Adlam::SmallLetterNun => '𞤲',
Adlam::SmallLetterKaf => '𞤳',
Adlam::SmallLetterYa => '𞤴',
Adlam::SmallLetterU => '𞤵',
Adlam::SmallLetterJiim => '𞤶',
Adlam::SmallLetterChi => '𞤷',
Adlam::SmallLetterHa => '𞤸',
Adlam::SmallLetterQaaf => '𞤹',
Adlam::SmallLetterGa => '𞤺',
Adlam::SmallLetterNya => '𞤻',
Adlam::SmallLetterTu => '𞤼',
Adlam::SmallLetterNha => '𞤽',
Adlam::SmallLetterVa => '𞤾',
Adlam::SmallLetterKha => '𞤿',
Adlam::SmallLetterGbe => '𞥀',
Adlam::SmallLetterZal => '𞥁',
Adlam::SmallLetterKpo => '𞥂',
Adlam::SmallLetterSha => '𞥃',
Adlam::AlifLengthener => '𞥄',
Adlam::VowelLengthener => '𞥅',
Adlam::GeminationMark => '𞥆',
Adlam::Hamza => '𞥇',
Adlam::ConsonantModifier => '𞥈',
Adlam::GeminateConsonantModifier => '𞥉',
Adlam::Nukta => '𞥊',
Adlam::NasalizationMark => '𞥋',
Adlam::DigitZero => '𞥐',
Adlam::DigitOne => '𞥑',
Adlam::DigitTwo => '𞥒',
Adlam::DigitThree => '𞥓',
Adlam::DigitFour => '𞥔',
Adlam::DigitFive => '𞥕',
Adlam::DigitSix => '𞥖',
Adlam::DigitSeven => '𞥗',
Adlam::DigitEight => '𞥘',
Adlam::DigitNine => '𞥙',
Adlam::InitialExclamationMark => '𞥞',
}
}
}
impl std::convert::TryFrom<char> for Adlam {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'𞤀' => Ok(Adlam::CapitalLetterAlif),
'𞤁' => Ok(Adlam::CapitalLetterDaali),
'𞤂' => Ok(Adlam::CapitalLetterLaam),
'𞤃' => Ok(Adlam::CapitalLetterMiim),
'𞤄' => Ok(Adlam::CapitalLetterBa),
'𞤅' => Ok(Adlam::CapitalLetterSinnyiiyhe),
'𞤆' => Ok(Adlam::CapitalLetterPe),
'𞤇' => Ok(Adlam::CapitalLetterBhe),
'𞤈' => Ok(Adlam::CapitalLetterRa),
'𞤉' => Ok(Adlam::CapitalLetterE),
'𞤊' => Ok(Adlam::CapitalLetterFa),
'𞤋' => Ok(Adlam::CapitalLetterI),
'𞤌' => Ok(Adlam::CapitalLetterO),
'𞤍' => Ok(Adlam::CapitalLetterDha),
'𞤎' => Ok(Adlam::CapitalLetterYhe),
'𞤏' => Ok(Adlam::CapitalLetterWaw),
'𞤐' => Ok(Adlam::CapitalLetterNun),
'𞤑' => Ok(Adlam::CapitalLetterKaf),
'𞤒' => Ok(Adlam::CapitalLetterYa),
'𞤓' => Ok(Adlam::CapitalLetterU),
'𞤔' => Ok(Adlam::CapitalLetterJiim),
'𞤕' => Ok(Adlam::CapitalLetterChi),
'𞤖' => Ok(Adlam::CapitalLetterHa),
'𞤗' => Ok(Adlam::CapitalLetterQaaf),
'𞤘' => Ok(Adlam::CapitalLetterGa),
'𞤙' => Ok(Adlam::CapitalLetterNya),
'𞤚' => Ok(Adlam::CapitalLetterTu),
'𞤛' => Ok(Adlam::CapitalLetterNha),
'𞤜' => Ok(Adlam::CapitalLetterVa),
'𞤝' => Ok(Adlam::CapitalLetterKha),
'𞤞' => Ok(Adlam::CapitalLetterGbe),
'𞤟' => Ok(Adlam::CapitalLetterZal),
'𞤠' => Ok(Adlam::CapitalLetterKpo),
'𞤡' => Ok(Adlam::CapitalLetterSha),
'𞤢' => Ok(Adlam::SmallLetterAlif),
'𞤣' => Ok(Adlam::SmallLetterDaali),
'𞤤' => Ok(Adlam::SmallLetterLaam),
'𞤥' => Ok(Adlam::SmallLetterMiim),
'𞤦' => Ok(Adlam::SmallLetterBa),
'𞤧' => Ok(Adlam::SmallLetterSinnyiiyhe),
'𞤨' => Ok(Adlam::SmallLetterPe),
'𞤩' => Ok(Adlam::SmallLetterBhe),
'𞤪' => Ok(Adlam::SmallLetterRa),
'𞤫' => Ok(Adlam::SmallLetterE),
'𞤬' => Ok(Adlam::SmallLetterFa),
'𞤭' => Ok(Adlam::SmallLetterI),
'𞤮' => Ok(Adlam::SmallLetterO),
'𞤯' => Ok(Adlam::SmallLetterDha),
'𞤰' => Ok(Adlam::SmallLetterYhe),
'𞤱' => Ok(Adlam::SmallLetterWaw),
'𞤲' => Ok(Adlam::SmallLetterNun),
'𞤳' => Ok(Adlam::SmallLetterKaf),
'𞤴' => Ok(Adlam::SmallLetterYa),
'𞤵' => Ok(Adlam::SmallLetterU),
'𞤶' => Ok(Adlam::SmallLetterJiim),
'𞤷' => Ok(Adlam::SmallLetterChi),
'𞤸' => Ok(Adlam::SmallLetterHa),
'𞤹' => Ok(Adlam::SmallLetterQaaf),
'𞤺' => Ok(Adlam::SmallLetterGa),
'𞤻' => Ok(Adlam::SmallLetterNya),
'𞤼' => Ok(Adlam::SmallLetterTu),
'𞤽' => Ok(Adlam::SmallLetterNha),
'𞤾' => Ok(Adlam::SmallLetterVa),
'𞤿' => Ok(Adlam::SmallLetterKha),
'𞥀' => Ok(Adlam::SmallLetterGbe),
'𞥁' => Ok(Adlam::SmallLetterZal),
'𞥂' => Ok(Adlam::SmallLetterKpo),
'𞥃' => Ok(Adlam::SmallLetterSha),
'𞥄' => Ok(Adlam::AlifLengthener),
'𞥅' => Ok(Adlam::VowelLengthener),
'𞥆' => Ok(Adlam::GeminationMark),
'𞥇' => Ok(Adlam::Hamza),
'𞥈' => Ok(Adlam::ConsonantModifier),
'𞥉' => Ok(Adlam::GeminateConsonantModifier),
'𞥊' => Ok(Adlam::Nukta),
'𞥋' => Ok(Adlam::NasalizationMark),
'𞥐' => Ok(Adlam::DigitZero),
'𞥑' => Ok(Adlam::DigitOne),
'𞥒' => Ok(Adlam::DigitTwo),
'𞥓' => Ok(Adlam::DigitThree),
'𞥔' => Ok(Adlam::DigitFour),
'𞥕' => Ok(Adlam::DigitFive),
'𞥖' => Ok(Adlam::DigitSix),
'𞥗' => Ok(Adlam::DigitSeven),
'𞥘' => Ok(Adlam::DigitEight),
'𞥙' => Ok(Adlam::DigitNine),
'𞥞' => Ok(Adlam::InitialExclamationMark),
_ => Err(()),
}
}
}
impl Into<u32> for Adlam {
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 Adlam {
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 Adlam {
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 Adlam {
pub fn new() -> Self {
Adlam::CapitalLetterAlif
}
pub fn name(&self) -> String {
let s = std::format!("Adlam{:#?}", self);
string_morph::to_sentence_case(&s)
}
}