mod constants {
pub const LETTER_HEH: char = '𐪀';
pub const LETTER_LAM: char = '𐪁';
pub const LETTER_HAH: char = '𐪂';
pub const LETTER_MEEM: char = '𐪃';
pub const LETTER_QAF: char = '𐪄';
pub const LETTER_WAW: char = '𐪅';
pub const LETTER_ES_DASH_2: char = '𐪆';
pub const LETTER_REH: char = '𐪇';
pub const LETTER_BEH: char = '𐪈';
pub const LETTER_TEH: char = '𐪉';
pub const LETTER_ES_DASH_1: char = '𐪊';
pub const LETTER_KAF: char = '𐪋';
pub const LETTER_NOON: char = '𐪌';
pub const LETTER_KHAH: char = '𐪍';
pub const LETTER_SAD: char = '𐪎';
pub const LETTER_ES_DASH_3: char = '𐪏';
pub const LETTER_FEH: char = '𐪐';
pub const LETTER_ALEF: char = '𐪑';
pub const LETTER_AIN: char = '𐪒';
pub const LETTER_DAD: char = '𐪓';
pub const LETTER_GEEM: char = '𐪔';
pub const LETTER_DAL: char = '𐪕';
pub const LETTER_GHAIN: char = '𐪖';
pub const LETTER_TAH: char = '𐪗';
pub const LETTER_ZAIN: char = '𐪘';
pub const LETTER_THAL: char = '𐪙';
pub const LETTER_YEH: char = '𐪚';
pub const LETTER_THEH: char = '𐪛';
pub const LETTER_ZAH: char = '𐪜';
pub const NUMBER_ONE: char = '𐪝';
pub const NUMBER_TEN: char = '𐪞';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum OldNorthArabian {
LetterHeh,
LetterLam,
LetterHah,
LetterMeem,
LetterQaf,
LetterWaw,
LetterEsDash2,
LetterReh,
LetterBeh,
LetterTeh,
LetterEsDash1,
LetterKaf,
LetterNoon,
LetterKhah,
LetterSad,
LetterEsDash3,
LetterFeh,
LetterAlef,
LetterAin,
LetterDad,
LetterGeem,
LetterDal,
LetterGhain,
LetterTah,
LetterZain,
LetterThal,
LetterYeh,
LetterTheh,
LetterZah,
NumberOne,
NumberTen,
}
impl Into<char> for OldNorthArabian {
fn into(self) -> char {
use constants::*;
match self {
OldNorthArabian::LetterHeh => LETTER_HEH,
OldNorthArabian::LetterLam => LETTER_LAM,
OldNorthArabian::LetterHah => LETTER_HAH,
OldNorthArabian::LetterMeem => LETTER_MEEM,
OldNorthArabian::LetterQaf => LETTER_QAF,
OldNorthArabian::LetterWaw => LETTER_WAW,
OldNorthArabian::LetterEsDash2 => LETTER_ES_DASH_2,
OldNorthArabian::LetterReh => LETTER_REH,
OldNorthArabian::LetterBeh => LETTER_BEH,
OldNorthArabian::LetterTeh => LETTER_TEH,
OldNorthArabian::LetterEsDash1 => LETTER_ES_DASH_1,
OldNorthArabian::LetterKaf => LETTER_KAF,
OldNorthArabian::LetterNoon => LETTER_NOON,
OldNorthArabian::LetterKhah => LETTER_KHAH,
OldNorthArabian::LetterSad => LETTER_SAD,
OldNorthArabian::LetterEsDash3 => LETTER_ES_DASH_3,
OldNorthArabian::LetterFeh => LETTER_FEH,
OldNorthArabian::LetterAlef => LETTER_ALEF,
OldNorthArabian::LetterAin => LETTER_AIN,
OldNorthArabian::LetterDad => LETTER_DAD,
OldNorthArabian::LetterGeem => LETTER_GEEM,
OldNorthArabian::LetterDal => LETTER_DAL,
OldNorthArabian::LetterGhain => LETTER_GHAIN,
OldNorthArabian::LetterTah => LETTER_TAH,
OldNorthArabian::LetterZain => LETTER_ZAIN,
OldNorthArabian::LetterThal => LETTER_THAL,
OldNorthArabian::LetterYeh => LETTER_YEH,
OldNorthArabian::LetterTheh => LETTER_THEH,
OldNorthArabian::LetterZah => LETTER_ZAH,
OldNorthArabian::NumberOne => NUMBER_ONE,
OldNorthArabian::NumberTen => NUMBER_TEN,
}
}
}
impl std::convert::TryFrom<char> for OldNorthArabian {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
LETTER_HEH => Ok(OldNorthArabian::LetterHeh),
LETTER_LAM => Ok(OldNorthArabian::LetterLam),
LETTER_HAH => Ok(OldNorthArabian::LetterHah),
LETTER_MEEM => Ok(OldNorthArabian::LetterMeem),
LETTER_QAF => Ok(OldNorthArabian::LetterQaf),
LETTER_WAW => Ok(OldNorthArabian::LetterWaw),
LETTER_ES_DASH_2 => Ok(OldNorthArabian::LetterEsDash2),
LETTER_REH => Ok(OldNorthArabian::LetterReh),
LETTER_BEH => Ok(OldNorthArabian::LetterBeh),
LETTER_TEH => Ok(OldNorthArabian::LetterTeh),
LETTER_ES_DASH_1 => Ok(OldNorthArabian::LetterEsDash1),
LETTER_KAF => Ok(OldNorthArabian::LetterKaf),
LETTER_NOON => Ok(OldNorthArabian::LetterNoon),
LETTER_KHAH => Ok(OldNorthArabian::LetterKhah),
LETTER_SAD => Ok(OldNorthArabian::LetterSad),
LETTER_ES_DASH_3 => Ok(OldNorthArabian::LetterEsDash3),
LETTER_FEH => Ok(OldNorthArabian::LetterFeh),
LETTER_ALEF => Ok(OldNorthArabian::LetterAlef),
LETTER_AIN => Ok(OldNorthArabian::LetterAin),
LETTER_DAD => Ok(OldNorthArabian::LetterDad),
LETTER_GEEM => Ok(OldNorthArabian::LetterGeem),
LETTER_DAL => Ok(OldNorthArabian::LetterDal),
LETTER_GHAIN => Ok(OldNorthArabian::LetterGhain),
LETTER_TAH => Ok(OldNorthArabian::LetterTah),
LETTER_ZAIN => Ok(OldNorthArabian::LetterZain),
LETTER_THAL => Ok(OldNorthArabian::LetterThal),
LETTER_YEH => Ok(OldNorthArabian::LetterYeh),
LETTER_THEH => Ok(OldNorthArabian::LetterTheh),
LETTER_ZAH => Ok(OldNorthArabian::LetterZah),
NUMBER_ONE => Ok(OldNorthArabian::NumberOne),
NUMBER_TEN => Ok(OldNorthArabian::NumberTen),
_ => Err(()),
}
}
}
impl Into<u32> for OldNorthArabian {
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 OldNorthArabian {
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 OldNorthArabian {
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 OldNorthArabian {
pub fn new() -> Self {
OldNorthArabian::LetterHeh
}
pub fn name(&self) -> &str {
match self {
OldNorthArabian::LetterHeh => "old north arabian letter heh",
OldNorthArabian::LetterLam => "old north arabian letter lam",
OldNorthArabian::LetterHah => "old north arabian letter hah",
OldNorthArabian::LetterMeem => "old north arabian letter meem",
OldNorthArabian::LetterQaf => "old north arabian letter qaf",
OldNorthArabian::LetterWaw => "old north arabian letter waw",
OldNorthArabian::LetterEsDash2 => "old north arabian letter es-2",
OldNorthArabian::LetterReh => "old north arabian letter reh",
OldNorthArabian::LetterBeh => "old north arabian letter beh",
OldNorthArabian::LetterTeh => "old north arabian letter teh",
OldNorthArabian::LetterEsDash1 => "old north arabian letter es-1",
OldNorthArabian::LetterKaf => "old north arabian letter kaf",
OldNorthArabian::LetterNoon => "old north arabian letter noon",
OldNorthArabian::LetterKhah => "old north arabian letter khah",
OldNorthArabian::LetterSad => "old north arabian letter sad",
OldNorthArabian::LetterEsDash3 => "old north arabian letter es-3",
OldNorthArabian::LetterFeh => "old north arabian letter feh",
OldNorthArabian::LetterAlef => "old north arabian letter alef",
OldNorthArabian::LetterAin => "old north arabian letter ain",
OldNorthArabian::LetterDad => "old north arabian letter dad",
OldNorthArabian::LetterGeem => "old north arabian letter geem",
OldNorthArabian::LetterDal => "old north arabian letter dal",
OldNorthArabian::LetterGhain => "old north arabian letter ghain",
OldNorthArabian::LetterTah => "old north arabian letter tah",
OldNorthArabian::LetterZain => "old north arabian letter zain",
OldNorthArabian::LetterThal => "old north arabian letter thal",
OldNorthArabian::LetterYeh => "old north arabian letter yeh",
OldNorthArabian::LetterTheh => "old north arabian letter theh",
OldNorthArabian::LetterZah => "old north arabian letter zah",
OldNorthArabian::NumberOne => "old north arabian number one",
OldNorthArabian::NumberTen => "old north arabian number ten",
}
}
}