mod constants {
pub const CYPRIOT_SYLLABLE_A: char = '𐠀';
pub const CYPRIOT_SYLLABLE_E: char = '𐠁';
pub const CYPRIOT_SYLLABLE_I: char = '𐠂';
pub const CYPRIOT_SYLLABLE_O: char = '𐠃';
pub const CYPRIOT_SYLLABLE_U: char = '𐠄';
pub const CYPRIOT_SYLLABLE_JA: char = '𐠅';
pub const CYPRIOT_SYLLABLE_JO: char = '𐠈';
pub const CYPRIOT_SYLLABLE_KA: char = '𐠊';
pub const CYPRIOT_SYLLABLE_KE: char = '𐠋';
pub const CYPRIOT_SYLLABLE_KI: char = '𐠌';
pub const CYPRIOT_SYLLABLE_KO: char = '𐠍';
pub const CYPRIOT_SYLLABLE_KU: char = '𐠎';
pub const CYPRIOT_SYLLABLE_LA: char = '𐠏';
pub const CYPRIOT_SYLLABLE_LE: char = '𐠐';
pub const CYPRIOT_SYLLABLE_LI: char = '𐠑';
pub const CYPRIOT_SYLLABLE_LO: char = '𐠒';
pub const CYPRIOT_SYLLABLE_LU: char = '𐠓';
pub const CYPRIOT_SYLLABLE_MA: char = '𐠔';
pub const CYPRIOT_SYLLABLE_ME: char = '𐠕';
pub const CYPRIOT_SYLLABLE_MI: char = '𐠖';
pub const CYPRIOT_SYLLABLE_MO: char = '𐠗';
pub const CYPRIOT_SYLLABLE_MU: char = '𐠘';
pub const CYPRIOT_SYLLABLE_NA: char = '𐠙';
pub const CYPRIOT_SYLLABLE_NE: char = '𐠚';
pub const CYPRIOT_SYLLABLE_NI: char = '𐠛';
pub const CYPRIOT_SYLLABLE_NO: char = '𐠜';
pub const CYPRIOT_SYLLABLE_NU: char = '𐠝';
pub const CYPRIOT_SYLLABLE_PA: char = '𐠞';
pub const CYPRIOT_SYLLABLE_PE: char = '𐠟';
pub const CYPRIOT_SYLLABLE_PI: char = '𐠠';
pub const CYPRIOT_SYLLABLE_PO: char = '𐠡';
pub const CYPRIOT_SYLLABLE_PU: char = '𐠢';
pub const CYPRIOT_SYLLABLE_RA: char = '𐠣';
pub const CYPRIOT_SYLLABLE_RE: char = '𐠤';
pub const CYPRIOT_SYLLABLE_RI: char = '𐠥';
pub const CYPRIOT_SYLLABLE_RO: char = '𐠦';
pub const CYPRIOT_SYLLABLE_RU: char = '𐠧';
pub const CYPRIOT_SYLLABLE_SA: char = '𐠨';
pub const CYPRIOT_SYLLABLE_SE: char = '𐠩';
pub const CYPRIOT_SYLLABLE_SI: char = '𐠪';
pub const CYPRIOT_SYLLABLE_SO: char = '𐠫';
pub const CYPRIOT_SYLLABLE_SU: char = '𐠬';
pub const CYPRIOT_SYLLABLE_TA: char = '𐠭';
pub const CYPRIOT_SYLLABLE_TE: char = '𐠮';
pub const CYPRIOT_SYLLABLE_TI: char = '𐠯';
pub const CYPRIOT_SYLLABLE_TO: char = '𐠰';
pub const CYPRIOT_SYLLABLE_TU: char = '𐠱';
pub const CYPRIOT_SYLLABLE_WA: char = '𐠲';
pub const CYPRIOT_SYLLABLE_WE: char = '𐠳';
pub const CYPRIOT_SYLLABLE_WI: char = '𐠴';
pub const CYPRIOT_SYLLABLE_WO: char = '𐠵';
pub const CYPRIOT_SYLLABLE_XA: char = '𐠷';
pub const CYPRIOT_SYLLABLE_XE: char = '𐠸';
pub const CYPRIOT_SYLLABLE_ZA: char = '𐠼';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum CypriotSyllabary {
CypriotSyllableA,
CypriotSyllableE,
CypriotSyllableI,
CypriotSyllableO,
CypriotSyllableU,
CypriotSyllableJa,
CypriotSyllableJo,
CypriotSyllableKa,
CypriotSyllableKe,
CypriotSyllableKi,
CypriotSyllableKo,
CypriotSyllableKu,
CypriotSyllableLa,
CypriotSyllableLe,
CypriotSyllableLi,
CypriotSyllableLo,
CypriotSyllableLu,
CypriotSyllableMa,
CypriotSyllableMe,
CypriotSyllableMi,
CypriotSyllableMo,
CypriotSyllableMu,
CypriotSyllableNa,
CypriotSyllableNe,
CypriotSyllableNi,
CypriotSyllableNo,
CypriotSyllableNu,
CypriotSyllablePa,
CypriotSyllablePe,
CypriotSyllablePi,
CypriotSyllablePo,
CypriotSyllablePu,
CypriotSyllableRa,
CypriotSyllableRe,
CypriotSyllableRi,
CypriotSyllableRo,
CypriotSyllableRu,
CypriotSyllableSa,
CypriotSyllableSe,
CypriotSyllableSi,
CypriotSyllableSo,
CypriotSyllableSu,
CypriotSyllableTa,
CypriotSyllableTe,
CypriotSyllableTi,
CypriotSyllableTo,
CypriotSyllableTu,
CypriotSyllableWa,
CypriotSyllableWe,
CypriotSyllableWi,
CypriotSyllableWo,
CypriotSyllableXa,
CypriotSyllableXe,
CypriotSyllableZa,
}
impl Into<char> for CypriotSyllabary {
fn into(self) -> char {
use constants::*;
match self {
CypriotSyllabary::CypriotSyllableA => CYPRIOT_SYLLABLE_A,
CypriotSyllabary::CypriotSyllableE => CYPRIOT_SYLLABLE_E,
CypriotSyllabary::CypriotSyllableI => CYPRIOT_SYLLABLE_I,
CypriotSyllabary::CypriotSyllableO => CYPRIOT_SYLLABLE_O,
CypriotSyllabary::CypriotSyllableU => CYPRIOT_SYLLABLE_U,
CypriotSyllabary::CypriotSyllableJa => CYPRIOT_SYLLABLE_JA,
CypriotSyllabary::CypriotSyllableJo => CYPRIOT_SYLLABLE_JO,
CypriotSyllabary::CypriotSyllableKa => CYPRIOT_SYLLABLE_KA,
CypriotSyllabary::CypriotSyllableKe => CYPRIOT_SYLLABLE_KE,
CypriotSyllabary::CypriotSyllableKi => CYPRIOT_SYLLABLE_KI,
CypriotSyllabary::CypriotSyllableKo => CYPRIOT_SYLLABLE_KO,
CypriotSyllabary::CypriotSyllableKu => CYPRIOT_SYLLABLE_KU,
CypriotSyllabary::CypriotSyllableLa => CYPRIOT_SYLLABLE_LA,
CypriotSyllabary::CypriotSyllableLe => CYPRIOT_SYLLABLE_LE,
CypriotSyllabary::CypriotSyllableLi => CYPRIOT_SYLLABLE_LI,
CypriotSyllabary::CypriotSyllableLo => CYPRIOT_SYLLABLE_LO,
CypriotSyllabary::CypriotSyllableLu => CYPRIOT_SYLLABLE_LU,
CypriotSyllabary::CypriotSyllableMa => CYPRIOT_SYLLABLE_MA,
CypriotSyllabary::CypriotSyllableMe => CYPRIOT_SYLLABLE_ME,
CypriotSyllabary::CypriotSyllableMi => CYPRIOT_SYLLABLE_MI,
CypriotSyllabary::CypriotSyllableMo => CYPRIOT_SYLLABLE_MO,
CypriotSyllabary::CypriotSyllableMu => CYPRIOT_SYLLABLE_MU,
CypriotSyllabary::CypriotSyllableNa => CYPRIOT_SYLLABLE_NA,
CypriotSyllabary::CypriotSyllableNe => CYPRIOT_SYLLABLE_NE,
CypriotSyllabary::CypriotSyllableNi => CYPRIOT_SYLLABLE_NI,
CypriotSyllabary::CypriotSyllableNo => CYPRIOT_SYLLABLE_NO,
CypriotSyllabary::CypriotSyllableNu => CYPRIOT_SYLLABLE_NU,
CypriotSyllabary::CypriotSyllablePa => CYPRIOT_SYLLABLE_PA,
CypriotSyllabary::CypriotSyllablePe => CYPRIOT_SYLLABLE_PE,
CypriotSyllabary::CypriotSyllablePi => CYPRIOT_SYLLABLE_PI,
CypriotSyllabary::CypriotSyllablePo => CYPRIOT_SYLLABLE_PO,
CypriotSyllabary::CypriotSyllablePu => CYPRIOT_SYLLABLE_PU,
CypriotSyllabary::CypriotSyllableRa => CYPRIOT_SYLLABLE_RA,
CypriotSyllabary::CypriotSyllableRe => CYPRIOT_SYLLABLE_RE,
CypriotSyllabary::CypriotSyllableRi => CYPRIOT_SYLLABLE_RI,
CypriotSyllabary::CypriotSyllableRo => CYPRIOT_SYLLABLE_RO,
CypriotSyllabary::CypriotSyllableRu => CYPRIOT_SYLLABLE_RU,
CypriotSyllabary::CypriotSyllableSa => CYPRIOT_SYLLABLE_SA,
CypriotSyllabary::CypriotSyllableSe => CYPRIOT_SYLLABLE_SE,
CypriotSyllabary::CypriotSyllableSi => CYPRIOT_SYLLABLE_SI,
CypriotSyllabary::CypriotSyllableSo => CYPRIOT_SYLLABLE_SO,
CypriotSyllabary::CypriotSyllableSu => CYPRIOT_SYLLABLE_SU,
CypriotSyllabary::CypriotSyllableTa => CYPRIOT_SYLLABLE_TA,
CypriotSyllabary::CypriotSyllableTe => CYPRIOT_SYLLABLE_TE,
CypriotSyllabary::CypriotSyllableTi => CYPRIOT_SYLLABLE_TI,
CypriotSyllabary::CypriotSyllableTo => CYPRIOT_SYLLABLE_TO,
CypriotSyllabary::CypriotSyllableTu => CYPRIOT_SYLLABLE_TU,
CypriotSyllabary::CypriotSyllableWa => CYPRIOT_SYLLABLE_WA,
CypriotSyllabary::CypriotSyllableWe => CYPRIOT_SYLLABLE_WE,
CypriotSyllabary::CypriotSyllableWi => CYPRIOT_SYLLABLE_WI,
CypriotSyllabary::CypriotSyllableWo => CYPRIOT_SYLLABLE_WO,
CypriotSyllabary::CypriotSyllableXa => CYPRIOT_SYLLABLE_XA,
CypriotSyllabary::CypriotSyllableXe => CYPRIOT_SYLLABLE_XE,
CypriotSyllabary::CypriotSyllableZa => CYPRIOT_SYLLABLE_ZA,
}
}
}
impl std::convert::TryFrom<char> for CypriotSyllabary {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
CYPRIOT_SYLLABLE_A => Ok(CypriotSyllabary::CypriotSyllableA),
CYPRIOT_SYLLABLE_E => Ok(CypriotSyllabary::CypriotSyllableE),
CYPRIOT_SYLLABLE_I => Ok(CypriotSyllabary::CypriotSyllableI),
CYPRIOT_SYLLABLE_O => Ok(CypriotSyllabary::CypriotSyllableO),
CYPRIOT_SYLLABLE_U => Ok(CypriotSyllabary::CypriotSyllableU),
CYPRIOT_SYLLABLE_JA => Ok(CypriotSyllabary::CypriotSyllableJa),
CYPRIOT_SYLLABLE_JO => Ok(CypriotSyllabary::CypriotSyllableJo),
CYPRIOT_SYLLABLE_KA => Ok(CypriotSyllabary::CypriotSyllableKa),
CYPRIOT_SYLLABLE_KE => Ok(CypriotSyllabary::CypriotSyllableKe),
CYPRIOT_SYLLABLE_KI => Ok(CypriotSyllabary::CypriotSyllableKi),
CYPRIOT_SYLLABLE_KO => Ok(CypriotSyllabary::CypriotSyllableKo),
CYPRIOT_SYLLABLE_KU => Ok(CypriotSyllabary::CypriotSyllableKu),
CYPRIOT_SYLLABLE_LA => Ok(CypriotSyllabary::CypriotSyllableLa),
CYPRIOT_SYLLABLE_LE => Ok(CypriotSyllabary::CypriotSyllableLe),
CYPRIOT_SYLLABLE_LI => Ok(CypriotSyllabary::CypriotSyllableLi),
CYPRIOT_SYLLABLE_LO => Ok(CypriotSyllabary::CypriotSyllableLo),
CYPRIOT_SYLLABLE_LU => Ok(CypriotSyllabary::CypriotSyllableLu),
CYPRIOT_SYLLABLE_MA => Ok(CypriotSyllabary::CypriotSyllableMa),
CYPRIOT_SYLLABLE_ME => Ok(CypriotSyllabary::CypriotSyllableMe),
CYPRIOT_SYLLABLE_MI => Ok(CypriotSyllabary::CypriotSyllableMi),
CYPRIOT_SYLLABLE_MO => Ok(CypriotSyllabary::CypriotSyllableMo),
CYPRIOT_SYLLABLE_MU => Ok(CypriotSyllabary::CypriotSyllableMu),
CYPRIOT_SYLLABLE_NA => Ok(CypriotSyllabary::CypriotSyllableNa),
CYPRIOT_SYLLABLE_NE => Ok(CypriotSyllabary::CypriotSyllableNe),
CYPRIOT_SYLLABLE_NI => Ok(CypriotSyllabary::CypriotSyllableNi),
CYPRIOT_SYLLABLE_NO => Ok(CypriotSyllabary::CypriotSyllableNo),
CYPRIOT_SYLLABLE_NU => Ok(CypriotSyllabary::CypriotSyllableNu),
CYPRIOT_SYLLABLE_PA => Ok(CypriotSyllabary::CypriotSyllablePa),
CYPRIOT_SYLLABLE_PE => Ok(CypriotSyllabary::CypriotSyllablePe),
CYPRIOT_SYLLABLE_PI => Ok(CypriotSyllabary::CypriotSyllablePi),
CYPRIOT_SYLLABLE_PO => Ok(CypriotSyllabary::CypriotSyllablePo),
CYPRIOT_SYLLABLE_PU => Ok(CypriotSyllabary::CypriotSyllablePu),
CYPRIOT_SYLLABLE_RA => Ok(CypriotSyllabary::CypriotSyllableRa),
CYPRIOT_SYLLABLE_RE => Ok(CypriotSyllabary::CypriotSyllableRe),
CYPRIOT_SYLLABLE_RI => Ok(CypriotSyllabary::CypriotSyllableRi),
CYPRIOT_SYLLABLE_RO => Ok(CypriotSyllabary::CypriotSyllableRo),
CYPRIOT_SYLLABLE_RU => Ok(CypriotSyllabary::CypriotSyllableRu),
CYPRIOT_SYLLABLE_SA => Ok(CypriotSyllabary::CypriotSyllableSa),
CYPRIOT_SYLLABLE_SE => Ok(CypriotSyllabary::CypriotSyllableSe),
CYPRIOT_SYLLABLE_SI => Ok(CypriotSyllabary::CypriotSyllableSi),
CYPRIOT_SYLLABLE_SO => Ok(CypriotSyllabary::CypriotSyllableSo),
CYPRIOT_SYLLABLE_SU => Ok(CypriotSyllabary::CypriotSyllableSu),
CYPRIOT_SYLLABLE_TA => Ok(CypriotSyllabary::CypriotSyllableTa),
CYPRIOT_SYLLABLE_TE => Ok(CypriotSyllabary::CypriotSyllableTe),
CYPRIOT_SYLLABLE_TI => Ok(CypriotSyllabary::CypriotSyllableTi),
CYPRIOT_SYLLABLE_TO => Ok(CypriotSyllabary::CypriotSyllableTo),
CYPRIOT_SYLLABLE_TU => Ok(CypriotSyllabary::CypriotSyllableTu),
CYPRIOT_SYLLABLE_WA => Ok(CypriotSyllabary::CypriotSyllableWa),
CYPRIOT_SYLLABLE_WE => Ok(CypriotSyllabary::CypriotSyllableWe),
CYPRIOT_SYLLABLE_WI => Ok(CypriotSyllabary::CypriotSyllableWi),
CYPRIOT_SYLLABLE_WO => Ok(CypriotSyllabary::CypriotSyllableWo),
CYPRIOT_SYLLABLE_XA => Ok(CypriotSyllabary::CypriotSyllableXa),
CYPRIOT_SYLLABLE_XE => Ok(CypriotSyllabary::CypriotSyllableXe),
CYPRIOT_SYLLABLE_ZA => Ok(CypriotSyllabary::CypriotSyllableZa),
_ => Err(()),
}
}
}
impl Into<u32> for CypriotSyllabary {
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 CypriotSyllabary {
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 CypriotSyllabary {
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 CypriotSyllabary {
pub fn new() -> Self {
CypriotSyllabary::CypriotSyllableA
}
pub fn name(&self) -> &str {
match self {
CypriotSyllabary::CypriotSyllableA => "cypriot syllable a",
CypriotSyllabary::CypriotSyllableE => "cypriot syllable e",
CypriotSyllabary::CypriotSyllableI => "cypriot syllable i",
CypriotSyllabary::CypriotSyllableO => "cypriot syllable o",
CypriotSyllabary::CypriotSyllableU => "cypriot syllable u",
CypriotSyllabary::CypriotSyllableJa => "cypriot syllable ja",
CypriotSyllabary::CypriotSyllableJo => "cypriot syllable jo",
CypriotSyllabary::CypriotSyllableKa => "cypriot syllable ka",
CypriotSyllabary::CypriotSyllableKe => "cypriot syllable ke",
CypriotSyllabary::CypriotSyllableKi => "cypriot syllable ki",
CypriotSyllabary::CypriotSyllableKo => "cypriot syllable ko",
CypriotSyllabary::CypriotSyllableKu => "cypriot syllable ku",
CypriotSyllabary::CypriotSyllableLa => "cypriot syllable la",
CypriotSyllabary::CypriotSyllableLe => "cypriot syllable le",
CypriotSyllabary::CypriotSyllableLi => "cypriot syllable li",
CypriotSyllabary::CypriotSyllableLo => "cypriot syllable lo",
CypriotSyllabary::CypriotSyllableLu => "cypriot syllable lu",
CypriotSyllabary::CypriotSyllableMa => "cypriot syllable ma",
CypriotSyllabary::CypriotSyllableMe => "cypriot syllable me",
CypriotSyllabary::CypriotSyllableMi => "cypriot syllable mi",
CypriotSyllabary::CypriotSyllableMo => "cypriot syllable mo",
CypriotSyllabary::CypriotSyllableMu => "cypriot syllable mu",
CypriotSyllabary::CypriotSyllableNa => "cypriot syllable na",
CypriotSyllabary::CypriotSyllableNe => "cypriot syllable ne",
CypriotSyllabary::CypriotSyllableNi => "cypriot syllable ni",
CypriotSyllabary::CypriotSyllableNo => "cypriot syllable no",
CypriotSyllabary::CypriotSyllableNu => "cypriot syllable nu",
CypriotSyllabary::CypriotSyllablePa => "cypriot syllable pa",
CypriotSyllabary::CypriotSyllablePe => "cypriot syllable pe",
CypriotSyllabary::CypriotSyllablePi => "cypriot syllable pi",
CypriotSyllabary::CypriotSyllablePo => "cypriot syllable po",
CypriotSyllabary::CypriotSyllablePu => "cypriot syllable pu",
CypriotSyllabary::CypriotSyllableRa => "cypriot syllable ra",
CypriotSyllabary::CypriotSyllableRe => "cypriot syllable re",
CypriotSyllabary::CypriotSyllableRi => "cypriot syllable ri",
CypriotSyllabary::CypriotSyllableRo => "cypriot syllable ro",
CypriotSyllabary::CypriotSyllableRu => "cypriot syllable ru",
CypriotSyllabary::CypriotSyllableSa => "cypriot syllable sa",
CypriotSyllabary::CypriotSyllableSe => "cypriot syllable se",
CypriotSyllabary::CypriotSyllableSi => "cypriot syllable si",
CypriotSyllabary::CypriotSyllableSo => "cypriot syllable so",
CypriotSyllabary::CypriotSyllableSu => "cypriot syllable su",
CypriotSyllabary::CypriotSyllableTa => "cypriot syllable ta",
CypriotSyllabary::CypriotSyllableTe => "cypriot syllable te",
CypriotSyllabary::CypriotSyllableTi => "cypriot syllable ti",
CypriotSyllabary::CypriotSyllableTo => "cypriot syllable to",
CypriotSyllabary::CypriotSyllableTu => "cypriot syllable tu",
CypriotSyllabary::CypriotSyllableWa => "cypriot syllable wa",
CypriotSyllabary::CypriotSyllableWe => "cypriot syllable we",
CypriotSyllabary::CypriotSyllableWi => "cypriot syllable wi",
CypriotSyllabary::CypriotSyllableWo => "cypriot syllable wo",
CypriotSyllabary::CypriotSyllableXa => "cypriot syllable xa",
CypriotSyllabary::CypriotSyllableXe => "cypriot syllable xe",
CypriotSyllabary::CypriotSyllableZa => "cypriot syllable za",
}
}
}