#[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 {
match self {
CypriotSyllabary::CypriotSyllableA => '𐠀',
CypriotSyllabary::CypriotSyllableE => '𐠁',
CypriotSyllabary::CypriotSyllableI => '𐠂',
CypriotSyllabary::CypriotSyllableO => '𐠃',
CypriotSyllabary::CypriotSyllableU => '𐠄',
CypriotSyllabary::CypriotSyllableJa => '𐠅',
CypriotSyllabary::CypriotSyllableJo => '𐠈',
CypriotSyllabary::CypriotSyllableKa => '𐠊',
CypriotSyllabary::CypriotSyllableKe => '𐠋',
CypriotSyllabary::CypriotSyllableKi => '𐠌',
CypriotSyllabary::CypriotSyllableKo => '𐠍',
CypriotSyllabary::CypriotSyllableKu => '𐠎',
CypriotSyllabary::CypriotSyllableLa => '𐠏',
CypriotSyllabary::CypriotSyllableLe => '𐠐',
CypriotSyllabary::CypriotSyllableLi => '𐠑',
CypriotSyllabary::CypriotSyllableLo => '𐠒',
CypriotSyllabary::CypriotSyllableLu => '𐠓',
CypriotSyllabary::CypriotSyllableMa => '𐠔',
CypriotSyllabary::CypriotSyllableMe => '𐠕',
CypriotSyllabary::CypriotSyllableMi => '𐠖',
CypriotSyllabary::CypriotSyllableMo => '𐠗',
CypriotSyllabary::CypriotSyllableMu => '𐠘',
CypriotSyllabary::CypriotSyllableNa => '𐠙',
CypriotSyllabary::CypriotSyllableNe => '𐠚',
CypriotSyllabary::CypriotSyllableNi => '𐠛',
CypriotSyllabary::CypriotSyllableNo => '𐠜',
CypriotSyllabary::CypriotSyllableNu => '𐠝',
CypriotSyllabary::CypriotSyllablePa => '𐠞',
CypriotSyllabary::CypriotSyllablePe => '𐠟',
CypriotSyllabary::CypriotSyllablePi => '𐠠',
CypriotSyllabary::CypriotSyllablePo => '𐠡',
CypriotSyllabary::CypriotSyllablePu => '𐠢',
CypriotSyllabary::CypriotSyllableRa => '𐠣',
CypriotSyllabary::CypriotSyllableRe => '𐠤',
CypriotSyllabary::CypriotSyllableRi => '𐠥',
CypriotSyllabary::CypriotSyllableRo => '𐠦',
CypriotSyllabary::CypriotSyllableRu => '𐠧',
CypriotSyllabary::CypriotSyllableSa => '𐠨',
CypriotSyllabary::CypriotSyllableSe => '𐠩',
CypriotSyllabary::CypriotSyllableSi => '𐠪',
CypriotSyllabary::CypriotSyllableSo => '𐠫',
CypriotSyllabary::CypriotSyllableSu => '𐠬',
CypriotSyllabary::CypriotSyllableTa => '𐠭',
CypriotSyllabary::CypriotSyllableTe => '𐠮',
CypriotSyllabary::CypriotSyllableTi => '𐠯',
CypriotSyllabary::CypriotSyllableTo => '𐠰',
CypriotSyllabary::CypriotSyllableTu => '𐠱',
CypriotSyllabary::CypriotSyllableWa => '𐠲',
CypriotSyllabary::CypriotSyllableWe => '𐠳',
CypriotSyllabary::CypriotSyllableWi => '𐠴',
CypriotSyllabary::CypriotSyllableWo => '𐠵',
CypriotSyllabary::CypriotSyllableXa => '𐠷',
CypriotSyllabary::CypriotSyllableXe => '𐠸',
CypriotSyllabary::CypriotSyllableZa => '𐠼',
}
}
}
impl std::convert::TryFrom<char> for CypriotSyllabary {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'𐠀' => Ok(CypriotSyllabary::CypriotSyllableA),
'𐠁' => Ok(CypriotSyllabary::CypriotSyllableE),
'𐠂' => Ok(CypriotSyllabary::CypriotSyllableI),
'𐠃' => Ok(CypriotSyllabary::CypriotSyllableO),
'𐠄' => Ok(CypriotSyllabary::CypriotSyllableU),
'𐠅' => Ok(CypriotSyllabary::CypriotSyllableJa),
'𐠈' => Ok(CypriotSyllabary::CypriotSyllableJo),
'𐠊' => Ok(CypriotSyllabary::CypriotSyllableKa),
'𐠋' => Ok(CypriotSyllabary::CypriotSyllableKe),
'𐠌' => Ok(CypriotSyllabary::CypriotSyllableKi),
'𐠍' => Ok(CypriotSyllabary::CypriotSyllableKo),
'𐠎' => Ok(CypriotSyllabary::CypriotSyllableKu),
'𐠏' => Ok(CypriotSyllabary::CypriotSyllableLa),
'𐠐' => Ok(CypriotSyllabary::CypriotSyllableLe),
'𐠑' => Ok(CypriotSyllabary::CypriotSyllableLi),
'𐠒' => Ok(CypriotSyllabary::CypriotSyllableLo),
'𐠓' => Ok(CypriotSyllabary::CypriotSyllableLu),
'𐠔' => Ok(CypriotSyllabary::CypriotSyllableMa),
'𐠕' => Ok(CypriotSyllabary::CypriotSyllableMe),
'𐠖' => Ok(CypriotSyllabary::CypriotSyllableMi),
'𐠗' => Ok(CypriotSyllabary::CypriotSyllableMo),
'𐠘' => Ok(CypriotSyllabary::CypriotSyllableMu),
'𐠙' => Ok(CypriotSyllabary::CypriotSyllableNa),
'𐠚' => Ok(CypriotSyllabary::CypriotSyllableNe),
'𐠛' => Ok(CypriotSyllabary::CypriotSyllableNi),
'𐠜' => Ok(CypriotSyllabary::CypriotSyllableNo),
'𐠝' => Ok(CypriotSyllabary::CypriotSyllableNu),
'𐠞' => Ok(CypriotSyllabary::CypriotSyllablePa),
'𐠟' => Ok(CypriotSyllabary::CypriotSyllablePe),
'𐠠' => Ok(CypriotSyllabary::CypriotSyllablePi),
'𐠡' => Ok(CypriotSyllabary::CypriotSyllablePo),
'𐠢' => Ok(CypriotSyllabary::CypriotSyllablePu),
'𐠣' => Ok(CypriotSyllabary::CypriotSyllableRa),
'𐠤' => Ok(CypriotSyllabary::CypriotSyllableRe),
'𐠥' => Ok(CypriotSyllabary::CypriotSyllableRi),
'𐠦' => Ok(CypriotSyllabary::CypriotSyllableRo),
'𐠧' => Ok(CypriotSyllabary::CypriotSyllableRu),
'𐠨' => Ok(CypriotSyllabary::CypriotSyllableSa),
'𐠩' => Ok(CypriotSyllabary::CypriotSyllableSe),
'𐠪' => Ok(CypriotSyllabary::CypriotSyllableSi),
'𐠫' => Ok(CypriotSyllabary::CypriotSyllableSo),
'𐠬' => Ok(CypriotSyllabary::CypriotSyllableSu),
'𐠭' => Ok(CypriotSyllabary::CypriotSyllableTa),
'𐠮' => Ok(CypriotSyllabary::CypriotSyllableTe),
'𐠯' => Ok(CypriotSyllabary::CypriotSyllableTi),
'𐠰' => Ok(CypriotSyllabary::CypriotSyllableTo),
'𐠱' => Ok(CypriotSyllabary::CypriotSyllableTu),
'𐠲' => Ok(CypriotSyllabary::CypriotSyllableWa),
'𐠳' => Ok(CypriotSyllabary::CypriotSyllableWe),
'𐠴' => Ok(CypriotSyllabary::CypriotSyllableWi),
'𐠵' => Ok(CypriotSyllabary::CypriotSyllableWo),
'𐠷' => Ok(CypriotSyllabary::CypriotSyllableXa),
'𐠸' => Ok(CypriotSyllabary::CypriotSyllableXe),
'𐠼' => 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) -> String {
let s = std::format!("CypriotSyllabary{:#?}", self);
string_morph::to_sentence_case(&s)
}
}