#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum ZanabazarSquare {
LetterA,
VowelSignI,
VowelSignUe,
VowelSignU,
VowelSignE,
VowelSignOe,
VowelSignO,
VowelSignAi,
VowelSignAu,
VowelSignReversedI,
VowelLengthMark,
LetterKa,
LetterKha,
LetterGa,
LetterGha,
LetterNga,
LetterCa,
LetterCha,
LetterJa,
LetterNya,
LetterTta,
LetterTtha,
LetterDda,
LetterDdha,
LetterNna,
LetterTa,
LetterTha,
LetterDa,
LetterDha,
LetterNa,
LetterPa,
LetterPha,
LetterBa,
LetterBha,
LetterMa,
LetterTsa,
LetterTsha,
LetterDza,
LetterDzha,
LetterZha,
LetterZa,
LetterDashA,
LetterYa,
LetterRa,
LetterLa,
LetterVa,
LetterSha,
LetterSsa,
LetterSa,
LetterHa,
LetterKssa,
FinalConsonantMark,
SignVirama,
SignCandrabindu,
SignCandrabinduWithOrnament,
SignCandraWithOrnament,
SignAnusvara,
SignVisarga,
ClusterDashInitialLetterRa,
ClusterDashFinalLetterYa,
ClusterDashFinalLetterRa,
ClusterDashFinalLetterLa,
ClusterDashFinalLetterVa,
InitialHeadMark,
ClosingHeadMark,
MarkTsheg,
MarkShad,
MarkDoubleShad,
MarkLongTsheg,
InitialDoubleDashLinedHeadMark,
ClosingDoubleDashLinedHeadMark,
Subjoiner,
}
impl Into<char> for ZanabazarSquare {
fn into(self) -> char {
match self {
ZanabazarSquare::LetterA => '𑨀',
ZanabazarSquare::VowelSignI => '𑨁',
ZanabazarSquare::VowelSignUe => '𑨂',
ZanabazarSquare::VowelSignU => '𑨃',
ZanabazarSquare::VowelSignE => '𑨄',
ZanabazarSquare::VowelSignOe => '𑨅',
ZanabazarSquare::VowelSignO => '𑨆',
ZanabazarSquare::VowelSignAi => '𑨇',
ZanabazarSquare::VowelSignAu => '𑨈',
ZanabazarSquare::VowelSignReversedI => '𑨉',
ZanabazarSquare::VowelLengthMark => '𑨊',
ZanabazarSquare::LetterKa => '𑨋',
ZanabazarSquare::LetterKha => '𑨌',
ZanabazarSquare::LetterGa => '𑨍',
ZanabazarSquare::LetterGha => '𑨎',
ZanabazarSquare::LetterNga => '𑨏',
ZanabazarSquare::LetterCa => '𑨐',
ZanabazarSquare::LetterCha => '𑨑',
ZanabazarSquare::LetterJa => '𑨒',
ZanabazarSquare::LetterNya => '𑨓',
ZanabazarSquare::LetterTta => '𑨔',
ZanabazarSquare::LetterTtha => '𑨕',
ZanabazarSquare::LetterDda => '𑨖',
ZanabazarSquare::LetterDdha => '𑨗',
ZanabazarSquare::LetterNna => '𑨘',
ZanabazarSquare::LetterTa => '𑨙',
ZanabazarSquare::LetterTha => '𑨚',
ZanabazarSquare::LetterDa => '𑨛',
ZanabazarSquare::LetterDha => '𑨜',
ZanabazarSquare::LetterNa => '𑨝',
ZanabazarSquare::LetterPa => '𑨞',
ZanabazarSquare::LetterPha => '𑨟',
ZanabazarSquare::LetterBa => '𑨠',
ZanabazarSquare::LetterBha => '𑨡',
ZanabazarSquare::LetterMa => '𑨢',
ZanabazarSquare::LetterTsa => '𑨣',
ZanabazarSquare::LetterTsha => '𑨤',
ZanabazarSquare::LetterDza => '𑨥',
ZanabazarSquare::LetterDzha => '𑨦',
ZanabazarSquare::LetterZha => '𑨧',
ZanabazarSquare::LetterZa => '𑨨',
ZanabazarSquare::LetterDashA => '𑨩',
ZanabazarSquare::LetterYa => '𑨪',
ZanabazarSquare::LetterRa => '𑨫',
ZanabazarSquare::LetterLa => '𑨬',
ZanabazarSquare::LetterVa => '𑨭',
ZanabazarSquare::LetterSha => '𑨮',
ZanabazarSquare::LetterSsa => '𑨯',
ZanabazarSquare::LetterSa => '𑨰',
ZanabazarSquare::LetterHa => '𑨱',
ZanabazarSquare::LetterKssa => '𑨲',
ZanabazarSquare::FinalConsonantMark => '𑨳',
ZanabazarSquare::SignVirama => '𑨴',
ZanabazarSquare::SignCandrabindu => '𑨵',
ZanabazarSquare::SignCandrabinduWithOrnament => '𑨶',
ZanabazarSquare::SignCandraWithOrnament => '𑨷',
ZanabazarSquare::SignAnusvara => '𑨸',
ZanabazarSquare::SignVisarga => '𑨹',
ZanabazarSquare::ClusterDashInitialLetterRa => '𑨺',
ZanabazarSquare::ClusterDashFinalLetterYa => '𑨻',
ZanabazarSquare::ClusterDashFinalLetterRa => '𑨼',
ZanabazarSquare::ClusterDashFinalLetterLa => '𑨽',
ZanabazarSquare::ClusterDashFinalLetterVa => '𑨾',
ZanabazarSquare::InitialHeadMark => '𑨿',
ZanabazarSquare::ClosingHeadMark => '𑩀',
ZanabazarSquare::MarkTsheg => '𑩁',
ZanabazarSquare::MarkShad => '𑩂',
ZanabazarSquare::MarkDoubleShad => '𑩃',
ZanabazarSquare::MarkLongTsheg => '𑩄',
ZanabazarSquare::InitialDoubleDashLinedHeadMark => '𑩅',
ZanabazarSquare::ClosingDoubleDashLinedHeadMark => '𑩆',
ZanabazarSquare::Subjoiner => '𑩇',
}
}
}
impl std::convert::TryFrom<char> for ZanabazarSquare {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'𑨀' => Ok(ZanabazarSquare::LetterA),
'𑨁' => Ok(ZanabazarSquare::VowelSignI),
'𑨂' => Ok(ZanabazarSquare::VowelSignUe),
'𑨃' => Ok(ZanabazarSquare::VowelSignU),
'𑨄' => Ok(ZanabazarSquare::VowelSignE),
'𑨅' => Ok(ZanabazarSquare::VowelSignOe),
'𑨆' => Ok(ZanabazarSquare::VowelSignO),
'𑨇' => Ok(ZanabazarSquare::VowelSignAi),
'𑨈' => Ok(ZanabazarSquare::VowelSignAu),
'𑨉' => Ok(ZanabazarSquare::VowelSignReversedI),
'𑨊' => Ok(ZanabazarSquare::VowelLengthMark),
'𑨋' => Ok(ZanabazarSquare::LetterKa),
'𑨌' => Ok(ZanabazarSquare::LetterKha),
'𑨍' => Ok(ZanabazarSquare::LetterGa),
'𑨎' => Ok(ZanabazarSquare::LetterGha),
'𑨏' => Ok(ZanabazarSquare::LetterNga),
'𑨐' => Ok(ZanabazarSquare::LetterCa),
'𑨑' => Ok(ZanabazarSquare::LetterCha),
'𑨒' => Ok(ZanabazarSquare::LetterJa),
'𑨓' => Ok(ZanabazarSquare::LetterNya),
'𑨔' => Ok(ZanabazarSquare::LetterTta),
'𑨕' => Ok(ZanabazarSquare::LetterTtha),
'𑨖' => Ok(ZanabazarSquare::LetterDda),
'𑨗' => Ok(ZanabazarSquare::LetterDdha),
'𑨘' => Ok(ZanabazarSquare::LetterNna),
'𑨙' => Ok(ZanabazarSquare::LetterTa),
'𑨚' => Ok(ZanabazarSquare::LetterTha),
'𑨛' => Ok(ZanabazarSquare::LetterDa),
'𑨜' => Ok(ZanabazarSquare::LetterDha),
'𑨝' => Ok(ZanabazarSquare::LetterNa),
'𑨞' => Ok(ZanabazarSquare::LetterPa),
'𑨟' => Ok(ZanabazarSquare::LetterPha),
'𑨠' => Ok(ZanabazarSquare::LetterBa),
'𑨡' => Ok(ZanabazarSquare::LetterBha),
'𑨢' => Ok(ZanabazarSquare::LetterMa),
'𑨣' => Ok(ZanabazarSquare::LetterTsa),
'𑨤' => Ok(ZanabazarSquare::LetterTsha),
'𑨥' => Ok(ZanabazarSquare::LetterDza),
'𑨦' => Ok(ZanabazarSquare::LetterDzha),
'𑨧' => Ok(ZanabazarSquare::LetterZha),
'𑨨' => Ok(ZanabazarSquare::LetterZa),
'𑨩' => Ok(ZanabazarSquare::LetterDashA),
'𑨪' => Ok(ZanabazarSquare::LetterYa),
'𑨫' => Ok(ZanabazarSquare::LetterRa),
'𑨬' => Ok(ZanabazarSquare::LetterLa),
'𑨭' => Ok(ZanabazarSquare::LetterVa),
'𑨮' => Ok(ZanabazarSquare::LetterSha),
'𑨯' => Ok(ZanabazarSquare::LetterSsa),
'𑨰' => Ok(ZanabazarSquare::LetterSa),
'𑨱' => Ok(ZanabazarSquare::LetterHa),
'𑨲' => Ok(ZanabazarSquare::LetterKssa),
'𑨳' => Ok(ZanabazarSquare::FinalConsonantMark),
'𑨴' => Ok(ZanabazarSquare::SignVirama),
'𑨵' => Ok(ZanabazarSquare::SignCandrabindu),
'𑨶' => Ok(ZanabazarSquare::SignCandrabinduWithOrnament),
'𑨷' => Ok(ZanabazarSquare::SignCandraWithOrnament),
'𑨸' => Ok(ZanabazarSquare::SignAnusvara),
'𑨹' => Ok(ZanabazarSquare::SignVisarga),
'𑨺' => Ok(ZanabazarSquare::ClusterDashInitialLetterRa),
'𑨻' => Ok(ZanabazarSquare::ClusterDashFinalLetterYa),
'𑨼' => Ok(ZanabazarSquare::ClusterDashFinalLetterRa),
'𑨽' => Ok(ZanabazarSquare::ClusterDashFinalLetterLa),
'𑨾' => Ok(ZanabazarSquare::ClusterDashFinalLetterVa),
'𑨿' => Ok(ZanabazarSquare::InitialHeadMark),
'𑩀' => Ok(ZanabazarSquare::ClosingHeadMark),
'𑩁' => Ok(ZanabazarSquare::MarkTsheg),
'𑩂' => Ok(ZanabazarSquare::MarkShad),
'𑩃' => Ok(ZanabazarSquare::MarkDoubleShad),
'𑩄' => Ok(ZanabazarSquare::MarkLongTsheg),
'𑩅' => Ok(ZanabazarSquare::InitialDoubleDashLinedHeadMark),
'𑩆' => Ok(ZanabazarSquare::ClosingDoubleDashLinedHeadMark),
'𑩇' => Ok(ZanabazarSquare::Subjoiner),
_ => Err(()),
}
}
}
impl Into<u32> for ZanabazarSquare {
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 ZanabazarSquare {
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 ZanabazarSquare {
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 ZanabazarSquare {
pub fn new() -> Self {
ZanabazarSquare::LetterA
}
pub fn name(&self) -> String {
let s = std::format!("ZanabazarSquare{:#?}", self);
string_morph::to_sentence_case(&s)
}
}