mod constants {
pub const MEROITIC_HIEROGLYPHIC_LETTER_A: char = '𐦀';
pub const MEROITIC_HIEROGLYPHIC_LETTER_E: char = '𐦁';
pub const MEROITIC_HIEROGLYPHIC_LETTER_I: char = '𐦂';
pub const MEROITIC_HIEROGLYPHIC_LETTER_O: char = '𐦃';
pub const MEROITIC_HIEROGLYPHIC_LETTER_YA: char = '𐦄';
pub const MEROITIC_HIEROGLYPHIC_LETTER_WA: char = '𐦅';
pub const MEROITIC_HIEROGLYPHIC_LETTER_BA: char = '𐦆';
pub const MEROITIC_HIEROGLYPHIC_LETTER_BA_DASH_2: char = '𐦇';
pub const MEROITIC_HIEROGLYPHIC_LETTER_PA: char = '𐦈';
pub const MEROITIC_HIEROGLYPHIC_LETTER_MA: char = '𐦉';
pub const MEROITIC_HIEROGLYPHIC_LETTER_NA: char = '𐦊';
pub const MEROITIC_HIEROGLYPHIC_LETTER_NA_DASH_2: char = '𐦋';
pub const MEROITIC_HIEROGLYPHIC_LETTER_NE: char = '𐦌';
pub const MEROITIC_HIEROGLYPHIC_LETTER_NE_DASH_2: char = '𐦍';
pub const MEROITIC_HIEROGLYPHIC_LETTER_RA: char = '𐦎';
pub const MEROITIC_HIEROGLYPHIC_LETTER_RA_DASH_2: char = '𐦏';
pub const MEROITIC_HIEROGLYPHIC_LETTER_LA: char = '𐦐';
pub const MEROITIC_HIEROGLYPHIC_LETTER_KHA: char = '𐦑';
pub const MEROITIC_HIEROGLYPHIC_LETTER_HHA: char = '𐦒';
pub const MEROITIC_HIEROGLYPHIC_LETTER_SA: char = '𐦓';
pub const MEROITIC_HIEROGLYPHIC_LETTER_SA_DASH_2: char = '𐦔';
pub const MEROITIC_HIEROGLYPHIC_LETTER_SE: char = '𐦕';
pub const MEROITIC_HIEROGLYPHIC_LETTER_KA: char = '𐦖';
pub const MEROITIC_HIEROGLYPHIC_LETTER_QA: char = '𐦗';
pub const MEROITIC_HIEROGLYPHIC_LETTER_TA: char = '𐦘';
pub const MEROITIC_HIEROGLYPHIC_LETTER_TA_DASH_2: char = '𐦙';
pub const MEROITIC_HIEROGLYPHIC_LETTER_TE: char = '𐦚';
pub const MEROITIC_HIEROGLYPHIC_LETTER_TE_DASH_2: char = '𐦛';
pub const MEROITIC_HIEROGLYPHIC_LETTER_TO: char = '𐦜';
pub const MEROITIC_HIEROGLYPHIC_LETTER_DA: char = '𐦝';
pub const MEROITIC_HIEROGLYPHIC_SYMBOL_VIDJ: char = '𐦞';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum MeroiticHieroglyphs {
MeroiticHieroglyphicLetterA,
MeroiticHieroglyphicLetterE,
MeroiticHieroglyphicLetterI,
MeroiticHieroglyphicLetterO,
MeroiticHieroglyphicLetterYa,
MeroiticHieroglyphicLetterWa,
MeroiticHieroglyphicLetterBa,
MeroiticHieroglyphicLetterBaDash2,
MeroiticHieroglyphicLetterPa,
MeroiticHieroglyphicLetterMa,
MeroiticHieroglyphicLetterNa,
MeroiticHieroglyphicLetterNaDash2,
MeroiticHieroglyphicLetterNe,
MeroiticHieroglyphicLetterNeDash2,
MeroiticHieroglyphicLetterRa,
MeroiticHieroglyphicLetterRaDash2,
MeroiticHieroglyphicLetterLa,
MeroiticHieroglyphicLetterKha,
MeroiticHieroglyphicLetterHha,
MeroiticHieroglyphicLetterSa,
MeroiticHieroglyphicLetterSaDash2,
MeroiticHieroglyphicLetterSe,
MeroiticHieroglyphicLetterKa,
MeroiticHieroglyphicLetterQa,
MeroiticHieroglyphicLetterTa,
MeroiticHieroglyphicLetterTaDash2,
MeroiticHieroglyphicLetterTe,
MeroiticHieroglyphicLetterTeDash2,
MeroiticHieroglyphicLetterTo,
MeroiticHieroglyphicLetterDa,
MeroiticHieroglyphicSymbolVidj,
}
impl Into<char> for MeroiticHieroglyphs {
fn into(self) -> char {
use constants::*;
match self {
MeroiticHieroglyphs::MeroiticHieroglyphicLetterA => MEROITIC_HIEROGLYPHIC_LETTER_A,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterE => MEROITIC_HIEROGLYPHIC_LETTER_E,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterI => MEROITIC_HIEROGLYPHIC_LETTER_I,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterO => MEROITIC_HIEROGLYPHIC_LETTER_O,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterYa => MEROITIC_HIEROGLYPHIC_LETTER_YA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterWa => MEROITIC_HIEROGLYPHIC_LETTER_WA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterBa => MEROITIC_HIEROGLYPHIC_LETTER_BA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterBaDash2 => MEROITIC_HIEROGLYPHIC_LETTER_BA_DASH_2,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterPa => MEROITIC_HIEROGLYPHIC_LETTER_PA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterMa => MEROITIC_HIEROGLYPHIC_LETTER_MA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterNa => MEROITIC_HIEROGLYPHIC_LETTER_NA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterNaDash2 => MEROITIC_HIEROGLYPHIC_LETTER_NA_DASH_2,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterNe => MEROITIC_HIEROGLYPHIC_LETTER_NE,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterNeDash2 => MEROITIC_HIEROGLYPHIC_LETTER_NE_DASH_2,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterRa => MEROITIC_HIEROGLYPHIC_LETTER_RA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterRaDash2 => MEROITIC_HIEROGLYPHIC_LETTER_RA_DASH_2,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterLa => MEROITIC_HIEROGLYPHIC_LETTER_LA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterKha => MEROITIC_HIEROGLYPHIC_LETTER_KHA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterHha => MEROITIC_HIEROGLYPHIC_LETTER_HHA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterSa => MEROITIC_HIEROGLYPHIC_LETTER_SA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterSaDash2 => MEROITIC_HIEROGLYPHIC_LETTER_SA_DASH_2,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterSe => MEROITIC_HIEROGLYPHIC_LETTER_SE,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterKa => MEROITIC_HIEROGLYPHIC_LETTER_KA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterQa => MEROITIC_HIEROGLYPHIC_LETTER_QA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterTa => MEROITIC_HIEROGLYPHIC_LETTER_TA,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterTaDash2 => MEROITIC_HIEROGLYPHIC_LETTER_TA_DASH_2,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterTe => MEROITIC_HIEROGLYPHIC_LETTER_TE,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterTeDash2 => MEROITIC_HIEROGLYPHIC_LETTER_TE_DASH_2,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterTo => MEROITIC_HIEROGLYPHIC_LETTER_TO,
MeroiticHieroglyphs::MeroiticHieroglyphicLetterDa => MEROITIC_HIEROGLYPHIC_LETTER_DA,
MeroiticHieroglyphs::MeroiticHieroglyphicSymbolVidj => MEROITIC_HIEROGLYPHIC_SYMBOL_VIDJ,
}
}
}
impl std::convert::TryFrom<char> for MeroiticHieroglyphs {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
MEROITIC_HIEROGLYPHIC_LETTER_A => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterA),
MEROITIC_HIEROGLYPHIC_LETTER_E => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterE),
MEROITIC_HIEROGLYPHIC_LETTER_I => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterI),
MEROITIC_HIEROGLYPHIC_LETTER_O => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterO),
MEROITIC_HIEROGLYPHIC_LETTER_YA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterYa),
MEROITIC_HIEROGLYPHIC_LETTER_WA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterWa),
MEROITIC_HIEROGLYPHIC_LETTER_BA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterBa),
MEROITIC_HIEROGLYPHIC_LETTER_BA_DASH_2 => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterBaDash2),
MEROITIC_HIEROGLYPHIC_LETTER_PA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterPa),
MEROITIC_HIEROGLYPHIC_LETTER_MA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterMa),
MEROITIC_HIEROGLYPHIC_LETTER_NA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterNa),
MEROITIC_HIEROGLYPHIC_LETTER_NA_DASH_2 => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterNaDash2),
MEROITIC_HIEROGLYPHIC_LETTER_NE => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterNe),
MEROITIC_HIEROGLYPHIC_LETTER_NE_DASH_2 => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterNeDash2),
MEROITIC_HIEROGLYPHIC_LETTER_RA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterRa),
MEROITIC_HIEROGLYPHIC_LETTER_RA_DASH_2 => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterRaDash2),
MEROITIC_HIEROGLYPHIC_LETTER_LA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterLa),
MEROITIC_HIEROGLYPHIC_LETTER_KHA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterKha),
MEROITIC_HIEROGLYPHIC_LETTER_HHA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterHha),
MEROITIC_HIEROGLYPHIC_LETTER_SA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterSa),
MEROITIC_HIEROGLYPHIC_LETTER_SA_DASH_2 => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterSaDash2),
MEROITIC_HIEROGLYPHIC_LETTER_SE => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterSe),
MEROITIC_HIEROGLYPHIC_LETTER_KA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterKa),
MEROITIC_HIEROGLYPHIC_LETTER_QA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterQa),
MEROITIC_HIEROGLYPHIC_LETTER_TA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterTa),
MEROITIC_HIEROGLYPHIC_LETTER_TA_DASH_2 => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterTaDash2),
MEROITIC_HIEROGLYPHIC_LETTER_TE => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterTe),
MEROITIC_HIEROGLYPHIC_LETTER_TE_DASH_2 => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterTeDash2),
MEROITIC_HIEROGLYPHIC_LETTER_TO => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterTo),
MEROITIC_HIEROGLYPHIC_LETTER_DA => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicLetterDa),
MEROITIC_HIEROGLYPHIC_SYMBOL_VIDJ => Ok(MeroiticHieroglyphs::MeroiticHieroglyphicSymbolVidj),
_ => Err(()),
}
}
}
impl Into<u32> for MeroiticHieroglyphs {
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 MeroiticHieroglyphs {
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 MeroiticHieroglyphs {
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 MeroiticHieroglyphs {
pub fn new() -> Self {
MeroiticHieroglyphs::MeroiticHieroglyphicLetterA
}
pub fn name(&self) -> &str {
match self {
MeroiticHieroglyphs::MeroiticHieroglyphicLetterA => "meroitic hieroglyphic letter a",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterE => "meroitic hieroglyphic letter e",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterI => "meroitic hieroglyphic letter i",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterO => "meroitic hieroglyphic letter o",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterYa => "meroitic hieroglyphic letter ya",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterWa => "meroitic hieroglyphic letter wa",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterBa => "meroitic hieroglyphic letter ba",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterBaDash2 => "meroitic hieroglyphic letter ba-2",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterPa => "meroitic hieroglyphic letter pa",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterMa => "meroitic hieroglyphic letter ma",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterNa => "meroitic hieroglyphic letter na",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterNaDash2 => "meroitic hieroglyphic letter na-2",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterNe => "meroitic hieroglyphic letter ne",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterNeDash2 => "meroitic hieroglyphic letter ne-2",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterRa => "meroitic hieroglyphic letter ra",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterRaDash2 => "meroitic hieroglyphic letter ra-2",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterLa => "meroitic hieroglyphic letter la",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterKha => "meroitic hieroglyphic letter kha",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterHha => "meroitic hieroglyphic letter hha",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterSa => "meroitic hieroglyphic letter sa",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterSaDash2 => "meroitic hieroglyphic letter sa-2",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterSe => "meroitic hieroglyphic letter se",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterKa => "meroitic hieroglyphic letter ka",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterQa => "meroitic hieroglyphic letter qa",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterTa => "meroitic hieroglyphic letter ta",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterTaDash2 => "meroitic hieroglyphic letter ta-2",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterTe => "meroitic hieroglyphic letter te",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterTeDash2 => "meroitic hieroglyphic letter te-2",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterTo => "meroitic hieroglyphic letter to",
MeroiticHieroglyphs::MeroiticHieroglyphicLetterDa => "meroitic hieroglyphic letter da",
MeroiticHieroglyphs::MeroiticHieroglyphicSymbolVidj => "meroitic hieroglyphic symbol vidj",
}
}
}