#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum MeroiticCursive {
LetterA,
LetterE,
LetterI,
LetterO,
LetterYa,
LetterWa,
LetterBa,
LetterPa,
LetterMa,
LetterNa,
LetterNe,
LetterRa,
LetterLa,
LetterKha,
LetterHha,
LetterSa,
LetterArchaicSa,
LetterSe,
LetterKa,
LetterQa,
LetterTa,
LetterTe,
LetterTo,
LetterDa,
FractionElevenTwelfths,
FractionOneHalf,
LogogramRmt,
LogogramImn,
NumberOne,
NumberTwo,
NumberThree,
NumberFour,
NumberFive,
NumberSix,
NumberSeven,
NumberEight,
NumberNine,
NumberTen,
NumberTwenty,
NumberThirty,
NumberForty,
NumberFifty,
NumberSixty,
NumberSeventy,
NumberOneHundred,
NumberTwoHundred,
NumberThreeHundred,
NumberFourHundred,
NumberFiveHundred,
NumberSixHundred,
NumberSevenHundred,
NumberEightHundred,
NumberNineHundred,
NumberOneThousand,
NumberTwoThousand,
NumberThreeThousand,
NumberFourThousand,
NumberFiveThousand,
NumberSixThousand,
NumberSevenThousand,
NumberEightThousand,
NumberNineThousand,
NumberTenThousand,
NumberTwentyThousand,
NumberThirtyThousand,
NumberFortyThousand,
NumberFiftyThousand,
NumberSixtyThousand,
NumberSeventyThousand,
NumberEightyThousand,
NumberNinetyThousand,
NumberOneHundredThousand,
NumberTwoHundredThousand,
NumberThreeHundredThousand,
NumberFourHundredThousand,
NumberFiveHundredThousand,
NumberSixHundredThousand,
NumberSevenHundredThousand,
NumberEightHundredThousand,
NumberNineHundredThousand,
FractionOneTwelfth,
FractionTwoTwelfths,
FractionThreeTwelfths,
FractionFourTwelfths,
FractionFiveTwelfths,
FractionSixTwelfths,
FractionSevenTwelfths,
FractionEightTwelfths,
FractionNineTwelfths,
}
impl Into<char> for MeroiticCursive {
fn into(self) -> char {
match self {
MeroiticCursive::LetterA => '𐦠',
MeroiticCursive::LetterE => '𐦡',
MeroiticCursive::LetterI => '𐦢',
MeroiticCursive::LetterO => '𐦣',
MeroiticCursive::LetterYa => '𐦤',
MeroiticCursive::LetterWa => '𐦥',
MeroiticCursive::LetterBa => '𐦦',
MeroiticCursive::LetterPa => '𐦧',
MeroiticCursive::LetterMa => '𐦨',
MeroiticCursive::LetterNa => '𐦩',
MeroiticCursive::LetterNe => '𐦪',
MeroiticCursive::LetterRa => '𐦫',
MeroiticCursive::LetterLa => '𐦬',
MeroiticCursive::LetterKha => '𐦭',
MeroiticCursive::LetterHha => '𐦮',
MeroiticCursive::LetterSa => '𐦯',
MeroiticCursive::LetterArchaicSa => '𐦰',
MeroiticCursive::LetterSe => '𐦱',
MeroiticCursive::LetterKa => '𐦲',
MeroiticCursive::LetterQa => '𐦳',
MeroiticCursive::LetterTa => '𐦴',
MeroiticCursive::LetterTe => '𐦵',
MeroiticCursive::LetterTo => '𐦶',
MeroiticCursive::LetterDa => '𐦷',
MeroiticCursive::FractionElevenTwelfths => '𐦼',
MeroiticCursive::FractionOneHalf => '𐦽',
MeroiticCursive::LogogramRmt => '𐦾',
MeroiticCursive::LogogramImn => '𐦿',
MeroiticCursive::NumberOne => '𐧀',
MeroiticCursive::NumberTwo => '𐧁',
MeroiticCursive::NumberThree => '𐧂',
MeroiticCursive::NumberFour => '𐧃',
MeroiticCursive::NumberFive => '𐧄',
MeroiticCursive::NumberSix => '𐧅',
MeroiticCursive::NumberSeven => '𐧆',
MeroiticCursive::NumberEight => '𐧇',
MeroiticCursive::NumberNine => '𐧈',
MeroiticCursive::NumberTen => '𐧉',
MeroiticCursive::NumberTwenty => '𐧊',
MeroiticCursive::NumberThirty => '𐧋',
MeroiticCursive::NumberForty => '𐧌',
MeroiticCursive::NumberFifty => '𐧍',
MeroiticCursive::NumberSixty => '𐧎',
MeroiticCursive::NumberSeventy => '𐧏',
MeroiticCursive::NumberOneHundred => '𐧒',
MeroiticCursive::NumberTwoHundred => '𐧓',
MeroiticCursive::NumberThreeHundred => '𐧔',
MeroiticCursive::NumberFourHundred => '𐧕',
MeroiticCursive::NumberFiveHundred => '𐧖',
MeroiticCursive::NumberSixHundred => '𐧗',
MeroiticCursive::NumberSevenHundred => '𐧘',
MeroiticCursive::NumberEightHundred => '𐧙',
MeroiticCursive::NumberNineHundred => '𐧚',
MeroiticCursive::NumberOneThousand => '𐧛',
MeroiticCursive::NumberTwoThousand => '𐧜',
MeroiticCursive::NumberThreeThousand => '𐧝',
MeroiticCursive::NumberFourThousand => '𐧞',
MeroiticCursive::NumberFiveThousand => '𐧟',
MeroiticCursive::NumberSixThousand => '𐧠',
MeroiticCursive::NumberSevenThousand => '𐧡',
MeroiticCursive::NumberEightThousand => '𐧢',
MeroiticCursive::NumberNineThousand => '𐧣',
MeroiticCursive::NumberTenThousand => '𐧤',
MeroiticCursive::NumberTwentyThousand => '𐧥',
MeroiticCursive::NumberThirtyThousand => '𐧦',
MeroiticCursive::NumberFortyThousand => '𐧧',
MeroiticCursive::NumberFiftyThousand => '𐧨',
MeroiticCursive::NumberSixtyThousand => '𐧩',
MeroiticCursive::NumberSeventyThousand => '𐧪',
MeroiticCursive::NumberEightyThousand => '𐧫',
MeroiticCursive::NumberNinetyThousand => '𐧬',
MeroiticCursive::NumberOneHundredThousand => '𐧭',
MeroiticCursive::NumberTwoHundredThousand => '𐧮',
MeroiticCursive::NumberThreeHundredThousand => '𐧯',
MeroiticCursive::NumberFourHundredThousand => '𐧰',
MeroiticCursive::NumberFiveHundredThousand => '𐧱',
MeroiticCursive::NumberSixHundredThousand => '𐧲',
MeroiticCursive::NumberSevenHundredThousand => '𐧳',
MeroiticCursive::NumberEightHundredThousand => '𐧴',
MeroiticCursive::NumberNineHundredThousand => '𐧵',
MeroiticCursive::FractionOneTwelfth => '𐧶',
MeroiticCursive::FractionTwoTwelfths => '𐧷',
MeroiticCursive::FractionThreeTwelfths => '𐧸',
MeroiticCursive::FractionFourTwelfths => '𐧹',
MeroiticCursive::FractionFiveTwelfths => '𐧺',
MeroiticCursive::FractionSixTwelfths => '𐧻',
MeroiticCursive::FractionSevenTwelfths => '𐧼',
MeroiticCursive::FractionEightTwelfths => '𐧽',
MeroiticCursive::FractionNineTwelfths => '𐧾',
}
}
}
impl std::convert::TryFrom<char> for MeroiticCursive {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'𐦠' => Ok(MeroiticCursive::LetterA),
'𐦡' => Ok(MeroiticCursive::LetterE),
'𐦢' => Ok(MeroiticCursive::LetterI),
'𐦣' => Ok(MeroiticCursive::LetterO),
'𐦤' => Ok(MeroiticCursive::LetterYa),
'𐦥' => Ok(MeroiticCursive::LetterWa),
'𐦦' => Ok(MeroiticCursive::LetterBa),
'𐦧' => Ok(MeroiticCursive::LetterPa),
'𐦨' => Ok(MeroiticCursive::LetterMa),
'𐦩' => Ok(MeroiticCursive::LetterNa),
'𐦪' => Ok(MeroiticCursive::LetterNe),
'𐦫' => Ok(MeroiticCursive::LetterRa),
'𐦬' => Ok(MeroiticCursive::LetterLa),
'𐦭' => Ok(MeroiticCursive::LetterKha),
'𐦮' => Ok(MeroiticCursive::LetterHha),
'𐦯' => Ok(MeroiticCursive::LetterSa),
'𐦰' => Ok(MeroiticCursive::LetterArchaicSa),
'𐦱' => Ok(MeroiticCursive::LetterSe),
'𐦲' => Ok(MeroiticCursive::LetterKa),
'𐦳' => Ok(MeroiticCursive::LetterQa),
'𐦴' => Ok(MeroiticCursive::LetterTa),
'𐦵' => Ok(MeroiticCursive::LetterTe),
'𐦶' => Ok(MeroiticCursive::LetterTo),
'𐦷' => Ok(MeroiticCursive::LetterDa),
'𐦼' => Ok(MeroiticCursive::FractionElevenTwelfths),
'𐦽' => Ok(MeroiticCursive::FractionOneHalf),
'𐦾' => Ok(MeroiticCursive::LogogramRmt),
'𐦿' => Ok(MeroiticCursive::LogogramImn),
'𐧀' => Ok(MeroiticCursive::NumberOne),
'𐧁' => Ok(MeroiticCursive::NumberTwo),
'𐧂' => Ok(MeroiticCursive::NumberThree),
'𐧃' => Ok(MeroiticCursive::NumberFour),
'𐧄' => Ok(MeroiticCursive::NumberFive),
'𐧅' => Ok(MeroiticCursive::NumberSix),
'𐧆' => Ok(MeroiticCursive::NumberSeven),
'𐧇' => Ok(MeroiticCursive::NumberEight),
'𐧈' => Ok(MeroiticCursive::NumberNine),
'𐧉' => Ok(MeroiticCursive::NumberTen),
'𐧊' => Ok(MeroiticCursive::NumberTwenty),
'𐧋' => Ok(MeroiticCursive::NumberThirty),
'𐧌' => Ok(MeroiticCursive::NumberForty),
'𐧍' => Ok(MeroiticCursive::NumberFifty),
'𐧎' => Ok(MeroiticCursive::NumberSixty),
'𐧏' => Ok(MeroiticCursive::NumberSeventy),
'𐧒' => Ok(MeroiticCursive::NumberOneHundred),
'𐧓' => Ok(MeroiticCursive::NumberTwoHundred),
'𐧔' => Ok(MeroiticCursive::NumberThreeHundred),
'𐧕' => Ok(MeroiticCursive::NumberFourHundred),
'𐧖' => Ok(MeroiticCursive::NumberFiveHundred),
'𐧗' => Ok(MeroiticCursive::NumberSixHundred),
'𐧘' => Ok(MeroiticCursive::NumberSevenHundred),
'𐧙' => Ok(MeroiticCursive::NumberEightHundred),
'𐧚' => Ok(MeroiticCursive::NumberNineHundred),
'𐧛' => Ok(MeroiticCursive::NumberOneThousand),
'𐧜' => Ok(MeroiticCursive::NumberTwoThousand),
'𐧝' => Ok(MeroiticCursive::NumberThreeThousand),
'𐧞' => Ok(MeroiticCursive::NumberFourThousand),
'𐧟' => Ok(MeroiticCursive::NumberFiveThousand),
'𐧠' => Ok(MeroiticCursive::NumberSixThousand),
'𐧡' => Ok(MeroiticCursive::NumberSevenThousand),
'𐧢' => Ok(MeroiticCursive::NumberEightThousand),
'𐧣' => Ok(MeroiticCursive::NumberNineThousand),
'𐧤' => Ok(MeroiticCursive::NumberTenThousand),
'𐧥' => Ok(MeroiticCursive::NumberTwentyThousand),
'𐧦' => Ok(MeroiticCursive::NumberThirtyThousand),
'𐧧' => Ok(MeroiticCursive::NumberFortyThousand),
'𐧨' => Ok(MeroiticCursive::NumberFiftyThousand),
'𐧩' => Ok(MeroiticCursive::NumberSixtyThousand),
'𐧪' => Ok(MeroiticCursive::NumberSeventyThousand),
'𐧫' => Ok(MeroiticCursive::NumberEightyThousand),
'𐧬' => Ok(MeroiticCursive::NumberNinetyThousand),
'𐧭' => Ok(MeroiticCursive::NumberOneHundredThousand),
'𐧮' => Ok(MeroiticCursive::NumberTwoHundredThousand),
'𐧯' => Ok(MeroiticCursive::NumberThreeHundredThousand),
'𐧰' => Ok(MeroiticCursive::NumberFourHundredThousand),
'𐧱' => Ok(MeroiticCursive::NumberFiveHundredThousand),
'𐧲' => Ok(MeroiticCursive::NumberSixHundredThousand),
'𐧳' => Ok(MeroiticCursive::NumberSevenHundredThousand),
'𐧴' => Ok(MeroiticCursive::NumberEightHundredThousand),
'𐧵' => Ok(MeroiticCursive::NumberNineHundredThousand),
'𐧶' => Ok(MeroiticCursive::FractionOneTwelfth),
'𐧷' => Ok(MeroiticCursive::FractionTwoTwelfths),
'𐧸' => Ok(MeroiticCursive::FractionThreeTwelfths),
'𐧹' => Ok(MeroiticCursive::FractionFourTwelfths),
'𐧺' => Ok(MeroiticCursive::FractionFiveTwelfths),
'𐧻' => Ok(MeroiticCursive::FractionSixTwelfths),
'𐧼' => Ok(MeroiticCursive::FractionSevenTwelfths),
'𐧽' => Ok(MeroiticCursive::FractionEightTwelfths),
'𐧾' => Ok(MeroiticCursive::FractionNineTwelfths),
_ => Err(()),
}
}
}
impl Into<u32> for MeroiticCursive {
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 MeroiticCursive {
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 MeroiticCursive {
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 MeroiticCursive {
pub fn new() -> Self {
MeroiticCursive::LetterA
}
pub fn name(&self) -> String {
let s = std::format!("MeroiticCursive{:#?}", self);
string_morph::to_sentence_case(&s)
}
}