#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Bhaiksuki {
LetterA,
LetterAa,
LetterI,
LetterIi,
LetterU,
LetterUu,
LetterVocalicR,
LetterVocalicRr,
LetterVocalicL,
LetterE,
LetterAi,
LetterO,
LetterAu,
LetterKa,
LetterKha,
LetterGa,
LetterGha,
LetterNga,
LetterCa,
LetterCha,
LetterJa,
LetterJha,
LetterNya,
LetterTta,
LetterTtha,
LetterDda,
LetterDdha,
LetterNna,
LetterTa,
LetterTha,
LetterDa,
LetterDha,
LetterNa,
LetterPa,
LetterPha,
LetterBa,
LetterBha,
LetterMa,
LetterYa,
LetterRa,
LetterLa,
LetterVa,
LetterSha,
LetterSsa,
LetterSa,
LetterHa,
VowelSignAa,
VowelSignI,
VowelSignIi,
VowelSignU,
VowelSignUu,
VowelSignVocalicR,
VowelSignVocalicRr,
VowelSignVocalicL,
VowelSignE,
VowelSignAi,
VowelSignO,
VowelSignAu,
SignCandrabindu,
SignAnusvara,
SignVisarga,
SignVirama,
SignAvagraha,
Danda,
DoubleDanda,
WordSeparator,
GapFillerDash1,
GapFillerDash2,
DigitZero,
DigitOne,
DigitTwo,
DigitThree,
DigitFour,
DigitFive,
DigitSix,
DigitSeven,
DigitEight,
DigitNine,
NumberOne,
NumberTwo,
NumberThree,
NumberFour,
NumberFive,
NumberSix,
NumberSeven,
NumberEight,
NumberNine,
NumberTen,
NumberTwenty,
NumberThirty,
NumberForty,
NumberFifty,
NumberSixty,
NumberSeventy,
NumberEighty,
NumberNinety,
HundredsUnitMark,
}
impl Into<char> for Bhaiksuki {
fn into(self) -> char {
match self {
Bhaiksuki::LetterA => '𑰀',
Bhaiksuki::LetterAa => '𑰁',
Bhaiksuki::LetterI => '𑰂',
Bhaiksuki::LetterIi => '𑰃',
Bhaiksuki::LetterU => '𑰄',
Bhaiksuki::LetterUu => '𑰅',
Bhaiksuki::LetterVocalicR => '𑰆',
Bhaiksuki::LetterVocalicRr => '𑰇',
Bhaiksuki::LetterVocalicL => '𑰈',
Bhaiksuki::LetterE => '𑰊',
Bhaiksuki::LetterAi => '𑰋',
Bhaiksuki::LetterO => '𑰌',
Bhaiksuki::LetterAu => '𑰍',
Bhaiksuki::LetterKa => '𑰎',
Bhaiksuki::LetterKha => '𑰏',
Bhaiksuki::LetterGa => '𑰐',
Bhaiksuki::LetterGha => '𑰑',
Bhaiksuki::LetterNga => '𑰒',
Bhaiksuki::LetterCa => '𑰓',
Bhaiksuki::LetterCha => '𑰔',
Bhaiksuki::LetterJa => '𑰕',
Bhaiksuki::LetterJha => '𑰖',
Bhaiksuki::LetterNya => '𑰗',
Bhaiksuki::LetterTta => '𑰘',
Bhaiksuki::LetterTtha => '𑰙',
Bhaiksuki::LetterDda => '𑰚',
Bhaiksuki::LetterDdha => '𑰛',
Bhaiksuki::LetterNna => '𑰜',
Bhaiksuki::LetterTa => '𑰝',
Bhaiksuki::LetterTha => '𑰞',
Bhaiksuki::LetterDa => '𑰟',
Bhaiksuki::LetterDha => '𑰠',
Bhaiksuki::LetterNa => '𑰡',
Bhaiksuki::LetterPa => '𑰢',
Bhaiksuki::LetterPha => '𑰣',
Bhaiksuki::LetterBa => '𑰤',
Bhaiksuki::LetterBha => '𑰥',
Bhaiksuki::LetterMa => '𑰦',
Bhaiksuki::LetterYa => '𑰧',
Bhaiksuki::LetterRa => '𑰨',
Bhaiksuki::LetterLa => '𑰩',
Bhaiksuki::LetterVa => '𑰪',
Bhaiksuki::LetterSha => '𑰫',
Bhaiksuki::LetterSsa => '𑰬',
Bhaiksuki::LetterSa => '𑰭',
Bhaiksuki::LetterHa => '𑰮',
Bhaiksuki::VowelSignAa => '𑰯',
Bhaiksuki::VowelSignI => '𑰰',
Bhaiksuki::VowelSignIi => '𑰱',
Bhaiksuki::VowelSignU => '𑰲',
Bhaiksuki::VowelSignUu => '𑰳',
Bhaiksuki::VowelSignVocalicR => '𑰴',
Bhaiksuki::VowelSignVocalicRr => '𑰵',
Bhaiksuki::VowelSignVocalicL => '𑰶',
Bhaiksuki::VowelSignE => '𑰸',
Bhaiksuki::VowelSignAi => '𑰹',
Bhaiksuki::VowelSignO => '𑰺',
Bhaiksuki::VowelSignAu => '𑰻',
Bhaiksuki::SignCandrabindu => '𑰼',
Bhaiksuki::SignAnusvara => '𑰽',
Bhaiksuki::SignVisarga => '𑰾',
Bhaiksuki::SignVirama => '𑰿',
Bhaiksuki::SignAvagraha => '𑱀',
Bhaiksuki::Danda => '𑱁',
Bhaiksuki::DoubleDanda => '𑱂',
Bhaiksuki::WordSeparator => '𑱃',
Bhaiksuki::GapFillerDash1 => '𑱄',
Bhaiksuki::GapFillerDash2 => '𑱅',
Bhaiksuki::DigitZero => '𑱐',
Bhaiksuki::DigitOne => '𑱑',
Bhaiksuki::DigitTwo => '𑱒',
Bhaiksuki::DigitThree => '𑱓',
Bhaiksuki::DigitFour => '𑱔',
Bhaiksuki::DigitFive => '𑱕',
Bhaiksuki::DigitSix => '𑱖',
Bhaiksuki::DigitSeven => '𑱗',
Bhaiksuki::DigitEight => '𑱘',
Bhaiksuki::DigitNine => '𑱙',
Bhaiksuki::NumberOne => '𑱚',
Bhaiksuki::NumberTwo => '𑱛',
Bhaiksuki::NumberThree => '𑱜',
Bhaiksuki::NumberFour => '𑱝',
Bhaiksuki::NumberFive => '𑱞',
Bhaiksuki::NumberSix => '𑱟',
Bhaiksuki::NumberSeven => '𑱠',
Bhaiksuki::NumberEight => '𑱡',
Bhaiksuki::NumberNine => '𑱢',
Bhaiksuki::NumberTen => '𑱣',
Bhaiksuki::NumberTwenty => '𑱤',
Bhaiksuki::NumberThirty => '𑱥',
Bhaiksuki::NumberForty => '𑱦',
Bhaiksuki::NumberFifty => '𑱧',
Bhaiksuki::NumberSixty => '𑱨',
Bhaiksuki::NumberSeventy => '𑱩',
Bhaiksuki::NumberEighty => '𑱪',
Bhaiksuki::NumberNinety => '𑱫',
Bhaiksuki::HundredsUnitMark => '𑱬',
}
}
}
impl std::convert::TryFrom<char> for Bhaiksuki {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'𑰀' => Ok(Bhaiksuki::LetterA),
'𑰁' => Ok(Bhaiksuki::LetterAa),
'𑰂' => Ok(Bhaiksuki::LetterI),
'𑰃' => Ok(Bhaiksuki::LetterIi),
'𑰄' => Ok(Bhaiksuki::LetterU),
'𑰅' => Ok(Bhaiksuki::LetterUu),
'𑰆' => Ok(Bhaiksuki::LetterVocalicR),
'𑰇' => Ok(Bhaiksuki::LetterVocalicRr),
'𑰈' => Ok(Bhaiksuki::LetterVocalicL),
'𑰊' => Ok(Bhaiksuki::LetterE),
'𑰋' => Ok(Bhaiksuki::LetterAi),
'𑰌' => Ok(Bhaiksuki::LetterO),
'𑰍' => Ok(Bhaiksuki::LetterAu),
'𑰎' => Ok(Bhaiksuki::LetterKa),
'𑰏' => Ok(Bhaiksuki::LetterKha),
'𑰐' => Ok(Bhaiksuki::LetterGa),
'𑰑' => Ok(Bhaiksuki::LetterGha),
'𑰒' => Ok(Bhaiksuki::LetterNga),
'𑰓' => Ok(Bhaiksuki::LetterCa),
'𑰔' => Ok(Bhaiksuki::LetterCha),
'𑰕' => Ok(Bhaiksuki::LetterJa),
'𑰖' => Ok(Bhaiksuki::LetterJha),
'𑰗' => Ok(Bhaiksuki::LetterNya),
'𑰘' => Ok(Bhaiksuki::LetterTta),
'𑰙' => Ok(Bhaiksuki::LetterTtha),
'𑰚' => Ok(Bhaiksuki::LetterDda),
'𑰛' => Ok(Bhaiksuki::LetterDdha),
'𑰜' => Ok(Bhaiksuki::LetterNna),
'𑰝' => Ok(Bhaiksuki::LetterTa),
'𑰞' => Ok(Bhaiksuki::LetterTha),
'𑰟' => Ok(Bhaiksuki::LetterDa),
'𑰠' => Ok(Bhaiksuki::LetterDha),
'𑰡' => Ok(Bhaiksuki::LetterNa),
'𑰢' => Ok(Bhaiksuki::LetterPa),
'𑰣' => Ok(Bhaiksuki::LetterPha),
'𑰤' => Ok(Bhaiksuki::LetterBa),
'𑰥' => Ok(Bhaiksuki::LetterBha),
'𑰦' => Ok(Bhaiksuki::LetterMa),
'𑰧' => Ok(Bhaiksuki::LetterYa),
'𑰨' => Ok(Bhaiksuki::LetterRa),
'𑰩' => Ok(Bhaiksuki::LetterLa),
'𑰪' => Ok(Bhaiksuki::LetterVa),
'𑰫' => Ok(Bhaiksuki::LetterSha),
'𑰬' => Ok(Bhaiksuki::LetterSsa),
'𑰭' => Ok(Bhaiksuki::LetterSa),
'𑰮' => Ok(Bhaiksuki::LetterHa),
'𑰯' => Ok(Bhaiksuki::VowelSignAa),
'𑰰' => Ok(Bhaiksuki::VowelSignI),
'𑰱' => Ok(Bhaiksuki::VowelSignIi),
'𑰲' => Ok(Bhaiksuki::VowelSignU),
'𑰳' => Ok(Bhaiksuki::VowelSignUu),
'𑰴' => Ok(Bhaiksuki::VowelSignVocalicR),
'𑰵' => Ok(Bhaiksuki::VowelSignVocalicRr),
'𑰶' => Ok(Bhaiksuki::VowelSignVocalicL),
'𑰸' => Ok(Bhaiksuki::VowelSignE),
'𑰹' => Ok(Bhaiksuki::VowelSignAi),
'𑰺' => Ok(Bhaiksuki::VowelSignO),
'𑰻' => Ok(Bhaiksuki::VowelSignAu),
'𑰼' => Ok(Bhaiksuki::SignCandrabindu),
'𑰽' => Ok(Bhaiksuki::SignAnusvara),
'𑰾' => Ok(Bhaiksuki::SignVisarga),
'𑰿' => Ok(Bhaiksuki::SignVirama),
'𑱀' => Ok(Bhaiksuki::SignAvagraha),
'𑱁' => Ok(Bhaiksuki::Danda),
'𑱂' => Ok(Bhaiksuki::DoubleDanda),
'𑱃' => Ok(Bhaiksuki::WordSeparator),
'𑱄' => Ok(Bhaiksuki::GapFillerDash1),
'𑱅' => Ok(Bhaiksuki::GapFillerDash2),
'𑱐' => Ok(Bhaiksuki::DigitZero),
'𑱑' => Ok(Bhaiksuki::DigitOne),
'𑱒' => Ok(Bhaiksuki::DigitTwo),
'𑱓' => Ok(Bhaiksuki::DigitThree),
'𑱔' => Ok(Bhaiksuki::DigitFour),
'𑱕' => Ok(Bhaiksuki::DigitFive),
'𑱖' => Ok(Bhaiksuki::DigitSix),
'𑱗' => Ok(Bhaiksuki::DigitSeven),
'𑱘' => Ok(Bhaiksuki::DigitEight),
'𑱙' => Ok(Bhaiksuki::DigitNine),
'𑱚' => Ok(Bhaiksuki::NumberOne),
'𑱛' => Ok(Bhaiksuki::NumberTwo),
'𑱜' => Ok(Bhaiksuki::NumberThree),
'𑱝' => Ok(Bhaiksuki::NumberFour),
'𑱞' => Ok(Bhaiksuki::NumberFive),
'𑱟' => Ok(Bhaiksuki::NumberSix),
'𑱠' => Ok(Bhaiksuki::NumberSeven),
'𑱡' => Ok(Bhaiksuki::NumberEight),
'𑱢' => Ok(Bhaiksuki::NumberNine),
'𑱣' => Ok(Bhaiksuki::NumberTen),
'𑱤' => Ok(Bhaiksuki::NumberTwenty),
'𑱥' => Ok(Bhaiksuki::NumberThirty),
'𑱦' => Ok(Bhaiksuki::NumberForty),
'𑱧' => Ok(Bhaiksuki::NumberFifty),
'𑱨' => Ok(Bhaiksuki::NumberSixty),
'𑱩' => Ok(Bhaiksuki::NumberSeventy),
'𑱪' => Ok(Bhaiksuki::NumberEighty),
'𑱫' => Ok(Bhaiksuki::NumberNinety),
'𑱬' => Ok(Bhaiksuki::HundredsUnitMark),
_ => Err(()),
}
}
}
impl Into<u32> for Bhaiksuki {
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 Bhaiksuki {
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 Bhaiksuki {
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 Bhaiksuki {
pub fn new() -> Self {
Bhaiksuki::LetterA
}
pub fn name(&self) -> String {
let s = std::format!("Bhaiksuki{:#?}", self);
string_morph::to_sentence_case(&s)
}
}