#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum AegeanNumbers {
AegeanWordSeparatorLine,
AegeanWordSeparatorDot,
AegeanCheckMark,
AegeanNumberOne,
AegeanNumberTwo,
AegeanNumberThree,
AegeanNumberFour,
AegeanNumberFive,
AegeanNumberSix,
AegeanNumberSeven,
AegeanNumberEight,
AegeanNumberNine,
AegeanNumberTen,
AegeanNumberTwenty,
AegeanNumberThirty,
AegeanNumberForty,
AegeanNumberFifty,
AegeanNumberSixty,
AegeanNumberSeventy,
AegeanNumberEighty,
AegeanNumberNinety,
AegeanNumberOneHundred,
AegeanNumberTwoHundred,
AegeanNumberThreeHundred,
AegeanNumberFourHundred,
AegeanNumberFiveHundred,
AegeanNumberSixHundred,
AegeanNumberSevenHundred,
AegeanNumberEightHundred,
AegeanNumberNineHundred,
AegeanNumberOneThousand,
AegeanNumberTwoThousand,
AegeanNumberThreeThousand,
AegeanNumberFourThousand,
AegeanNumberFiveThousand,
AegeanNumberSixThousand,
AegeanNumberSevenThousand,
AegeanNumberEightThousand,
AegeanNumberNineThousand,
AegeanNumberTenThousand,
AegeanNumberTwentyThousand,
AegeanNumberThirtyThousand,
AegeanNumberFortyThousand,
AegeanNumberFiftyThousand,
AegeanNumberSixtyThousand,
AegeanNumberSeventyThousand,
AegeanNumberEightyThousand,
AegeanNumberNinetyThousand,
AegeanWeightBaseUnit,
AegeanWeightFirstSubunit,
AegeanWeightSecondSubunit,
AegeanWeightThirdSubunit,
AegeanWeightFourthSubunit,
AegeanDryMeasureFirstSubunit,
AegeanLiquidMeasureFirstSubunit,
AegeanMeasureSecondSubunit,
}
impl Into<char> for AegeanNumbers {
fn into(self) -> char {
match self {
AegeanNumbers::AegeanWordSeparatorLine => '𐄀',
AegeanNumbers::AegeanWordSeparatorDot => '𐄁',
AegeanNumbers::AegeanCheckMark => '𐄂',
AegeanNumbers::AegeanNumberOne => '𐄇',
AegeanNumbers::AegeanNumberTwo => '𐄈',
AegeanNumbers::AegeanNumberThree => '𐄉',
AegeanNumbers::AegeanNumberFour => '𐄊',
AegeanNumbers::AegeanNumberFive => '𐄋',
AegeanNumbers::AegeanNumberSix => '𐄌',
AegeanNumbers::AegeanNumberSeven => '𐄍',
AegeanNumbers::AegeanNumberEight => '𐄎',
AegeanNumbers::AegeanNumberNine => '𐄏',
AegeanNumbers::AegeanNumberTen => '𐄐',
AegeanNumbers::AegeanNumberTwenty => '𐄑',
AegeanNumbers::AegeanNumberThirty => '𐄒',
AegeanNumbers::AegeanNumberForty => '𐄓',
AegeanNumbers::AegeanNumberFifty => '𐄔',
AegeanNumbers::AegeanNumberSixty => '𐄕',
AegeanNumbers::AegeanNumberSeventy => '𐄖',
AegeanNumbers::AegeanNumberEighty => '𐄗',
AegeanNumbers::AegeanNumberNinety => '𐄘',
AegeanNumbers::AegeanNumberOneHundred => '𐄙',
AegeanNumbers::AegeanNumberTwoHundred => '𐄚',
AegeanNumbers::AegeanNumberThreeHundred => '𐄛',
AegeanNumbers::AegeanNumberFourHundred => '𐄜',
AegeanNumbers::AegeanNumberFiveHundred => '𐄝',
AegeanNumbers::AegeanNumberSixHundred => '𐄞',
AegeanNumbers::AegeanNumberSevenHundred => '𐄟',
AegeanNumbers::AegeanNumberEightHundred => '𐄠',
AegeanNumbers::AegeanNumberNineHundred => '𐄡',
AegeanNumbers::AegeanNumberOneThousand => '𐄢',
AegeanNumbers::AegeanNumberTwoThousand => '𐄣',
AegeanNumbers::AegeanNumberThreeThousand => '𐄤',
AegeanNumbers::AegeanNumberFourThousand => '𐄥',
AegeanNumbers::AegeanNumberFiveThousand => '𐄦',
AegeanNumbers::AegeanNumberSixThousand => '𐄧',
AegeanNumbers::AegeanNumberSevenThousand => '𐄨',
AegeanNumbers::AegeanNumberEightThousand => '𐄩',
AegeanNumbers::AegeanNumberNineThousand => '𐄪',
AegeanNumbers::AegeanNumberTenThousand => '𐄫',
AegeanNumbers::AegeanNumberTwentyThousand => '𐄬',
AegeanNumbers::AegeanNumberThirtyThousand => '𐄭',
AegeanNumbers::AegeanNumberFortyThousand => '𐄮',
AegeanNumbers::AegeanNumberFiftyThousand => '𐄯',
AegeanNumbers::AegeanNumberSixtyThousand => '𐄰',
AegeanNumbers::AegeanNumberSeventyThousand => '𐄱',
AegeanNumbers::AegeanNumberEightyThousand => '𐄲',
AegeanNumbers::AegeanNumberNinetyThousand => '𐄳',
AegeanNumbers::AegeanWeightBaseUnit => '𐄷',
AegeanNumbers::AegeanWeightFirstSubunit => '𐄸',
AegeanNumbers::AegeanWeightSecondSubunit => '𐄹',
AegeanNumbers::AegeanWeightThirdSubunit => '𐄺',
AegeanNumbers::AegeanWeightFourthSubunit => '𐄻',
AegeanNumbers::AegeanDryMeasureFirstSubunit => '𐄼',
AegeanNumbers::AegeanLiquidMeasureFirstSubunit => '𐄽',
AegeanNumbers::AegeanMeasureSecondSubunit => '𐄾',
}
}
}
impl std::convert::TryFrom<char> for AegeanNumbers {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'𐄀' => Ok(AegeanNumbers::AegeanWordSeparatorLine),
'𐄁' => Ok(AegeanNumbers::AegeanWordSeparatorDot),
'𐄂' => Ok(AegeanNumbers::AegeanCheckMark),
'𐄇' => Ok(AegeanNumbers::AegeanNumberOne),
'𐄈' => Ok(AegeanNumbers::AegeanNumberTwo),
'𐄉' => Ok(AegeanNumbers::AegeanNumberThree),
'𐄊' => Ok(AegeanNumbers::AegeanNumberFour),
'𐄋' => Ok(AegeanNumbers::AegeanNumberFive),
'𐄌' => Ok(AegeanNumbers::AegeanNumberSix),
'𐄍' => Ok(AegeanNumbers::AegeanNumberSeven),
'𐄎' => Ok(AegeanNumbers::AegeanNumberEight),
'𐄏' => Ok(AegeanNumbers::AegeanNumberNine),
'𐄐' => Ok(AegeanNumbers::AegeanNumberTen),
'𐄑' => Ok(AegeanNumbers::AegeanNumberTwenty),
'𐄒' => Ok(AegeanNumbers::AegeanNumberThirty),
'𐄓' => Ok(AegeanNumbers::AegeanNumberForty),
'𐄔' => Ok(AegeanNumbers::AegeanNumberFifty),
'𐄕' => Ok(AegeanNumbers::AegeanNumberSixty),
'𐄖' => Ok(AegeanNumbers::AegeanNumberSeventy),
'𐄗' => Ok(AegeanNumbers::AegeanNumberEighty),
'𐄘' => Ok(AegeanNumbers::AegeanNumberNinety),
'𐄙' => Ok(AegeanNumbers::AegeanNumberOneHundred),
'𐄚' => Ok(AegeanNumbers::AegeanNumberTwoHundred),
'𐄛' => Ok(AegeanNumbers::AegeanNumberThreeHundred),
'𐄜' => Ok(AegeanNumbers::AegeanNumberFourHundred),
'𐄝' => Ok(AegeanNumbers::AegeanNumberFiveHundred),
'𐄞' => Ok(AegeanNumbers::AegeanNumberSixHundred),
'𐄟' => Ok(AegeanNumbers::AegeanNumberSevenHundred),
'𐄠' => Ok(AegeanNumbers::AegeanNumberEightHundred),
'𐄡' => Ok(AegeanNumbers::AegeanNumberNineHundred),
'𐄢' => Ok(AegeanNumbers::AegeanNumberOneThousand),
'𐄣' => Ok(AegeanNumbers::AegeanNumberTwoThousand),
'𐄤' => Ok(AegeanNumbers::AegeanNumberThreeThousand),
'𐄥' => Ok(AegeanNumbers::AegeanNumberFourThousand),
'𐄦' => Ok(AegeanNumbers::AegeanNumberFiveThousand),
'𐄧' => Ok(AegeanNumbers::AegeanNumberSixThousand),
'𐄨' => Ok(AegeanNumbers::AegeanNumberSevenThousand),
'𐄩' => Ok(AegeanNumbers::AegeanNumberEightThousand),
'𐄪' => Ok(AegeanNumbers::AegeanNumberNineThousand),
'𐄫' => Ok(AegeanNumbers::AegeanNumberTenThousand),
'𐄬' => Ok(AegeanNumbers::AegeanNumberTwentyThousand),
'𐄭' => Ok(AegeanNumbers::AegeanNumberThirtyThousand),
'𐄮' => Ok(AegeanNumbers::AegeanNumberFortyThousand),
'𐄯' => Ok(AegeanNumbers::AegeanNumberFiftyThousand),
'𐄰' => Ok(AegeanNumbers::AegeanNumberSixtyThousand),
'𐄱' => Ok(AegeanNumbers::AegeanNumberSeventyThousand),
'𐄲' => Ok(AegeanNumbers::AegeanNumberEightyThousand),
'𐄳' => Ok(AegeanNumbers::AegeanNumberNinetyThousand),
'𐄷' => Ok(AegeanNumbers::AegeanWeightBaseUnit),
'𐄸' => Ok(AegeanNumbers::AegeanWeightFirstSubunit),
'𐄹' => Ok(AegeanNumbers::AegeanWeightSecondSubunit),
'𐄺' => Ok(AegeanNumbers::AegeanWeightThirdSubunit),
'𐄻' => Ok(AegeanNumbers::AegeanWeightFourthSubunit),
'𐄼' => Ok(AegeanNumbers::AegeanDryMeasureFirstSubunit),
'𐄽' => Ok(AegeanNumbers::AegeanLiquidMeasureFirstSubunit),
'𐄾' => Ok(AegeanNumbers::AegeanMeasureSecondSubunit),
_ => Err(()),
}
}
}
impl Into<u32> for AegeanNumbers {
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 AegeanNumbers {
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 AegeanNumbers {
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 AegeanNumbers {
pub fn new() -> Self {
AegeanNumbers::AegeanWordSeparatorLine
}
pub fn name(&self) -> String {
let s = std::format!("AegeanNumbers{:#?}", self);
string_morph::to_sentence_case(&s)
}
}