mod constants {
pub const HENTAIGANA_LETTER_RE_DASH_3: char = '𛄀';
pub const HENTAIGANA_LETTER_RE_DASH_4: char = '𛄁';
pub const HENTAIGANA_LETTER_RO_DASH_1: char = '𛄂';
pub const HENTAIGANA_LETTER_RO_DASH_2: char = '𛄃';
pub const HENTAIGANA_LETTER_RO_DASH_3: char = '𛄄';
pub const HENTAIGANA_LETTER_RO_DASH_4: char = '𛄅';
pub const HENTAIGANA_LETTER_RO_DASH_5: char = '𛄆';
pub const HENTAIGANA_LETTER_RO_DASH_6: char = '𛄇';
pub const HENTAIGANA_LETTER_WA_DASH_1: char = '𛄈';
pub const HENTAIGANA_LETTER_WA_DASH_2: char = '𛄉';
pub const HENTAIGANA_LETTER_WA_DASH_3: char = '𛄊';
pub const HENTAIGANA_LETTER_WA_DASH_4: char = '𛄋';
pub const HENTAIGANA_LETTER_WA_DASH_5: char = '𛄌';
pub const HENTAIGANA_LETTER_WI_DASH_1: char = '𛄍';
pub const HENTAIGANA_LETTER_WI_DASH_2: char = '𛄎';
pub const HENTAIGANA_LETTER_WI_DASH_3: char = '𛄏';
pub const HENTAIGANA_LETTER_WI_DASH_4: char = '𛄐';
pub const HENTAIGANA_LETTER_WI_DASH_5: char = '𛄑';
pub const HENTAIGANA_LETTER_WE_DASH_1: char = '𛄒';
pub const HENTAIGANA_LETTER_WE_DASH_2: char = '𛄓';
pub const HENTAIGANA_LETTER_WE_DASH_3: char = '𛄔';
pub const HENTAIGANA_LETTER_WE_DASH_4: char = '𛄕';
pub const HENTAIGANA_LETTER_WO_DASH_1: char = '𛄖';
pub const HENTAIGANA_LETTER_WO_DASH_2: char = '𛄗';
pub const HENTAIGANA_LETTER_WO_DASH_3: char = '𛄘';
pub const HENTAIGANA_LETTER_WO_DASH_4: char = '𛄙';
pub const HENTAIGANA_LETTER_WO_DASH_5: char = '𛄚';
pub const HENTAIGANA_LETTER_WO_DASH_6: char = '𛄛';
pub const HENTAIGANA_LETTER_WO_DASH_7: char = '𛄜';
pub const HENTAIGANA_LETTER_N_DASH_MU_DASH_MO_DASH_1: char = '𛄝';
pub const HENTAIGANA_LETTER_N_DASH_MU_DASH_MO_DASH_2: char = '𛄞';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum KanaExtendedA {
HentaiganaLetterReDash3,
HentaiganaLetterReDash4,
HentaiganaLetterRoDash1,
HentaiganaLetterRoDash2,
HentaiganaLetterRoDash3,
HentaiganaLetterRoDash4,
HentaiganaLetterRoDash5,
HentaiganaLetterRoDash6,
HentaiganaLetterWaDash1,
HentaiganaLetterWaDash2,
HentaiganaLetterWaDash3,
HentaiganaLetterWaDash4,
HentaiganaLetterWaDash5,
HentaiganaLetterWiDash1,
HentaiganaLetterWiDash2,
HentaiganaLetterWiDash3,
HentaiganaLetterWiDash4,
HentaiganaLetterWiDash5,
HentaiganaLetterWeDash1,
HentaiganaLetterWeDash2,
HentaiganaLetterWeDash3,
HentaiganaLetterWeDash4,
HentaiganaLetterWoDash1,
HentaiganaLetterWoDash2,
HentaiganaLetterWoDash3,
HentaiganaLetterWoDash4,
HentaiganaLetterWoDash5,
HentaiganaLetterWoDash6,
HentaiganaLetterWoDash7,
HentaiganaLetterNDashMuDashMoDash1,
HentaiganaLetterNDashMuDashMoDash2,
}
impl Into<char> for KanaExtendedA {
fn into(self) -> char {
use constants::*;
match self {
KanaExtendedA::HentaiganaLetterReDash3 => HENTAIGANA_LETTER_RE_DASH_3,
KanaExtendedA::HentaiganaLetterReDash4 => HENTAIGANA_LETTER_RE_DASH_4,
KanaExtendedA::HentaiganaLetterRoDash1 => HENTAIGANA_LETTER_RO_DASH_1,
KanaExtendedA::HentaiganaLetterRoDash2 => HENTAIGANA_LETTER_RO_DASH_2,
KanaExtendedA::HentaiganaLetterRoDash3 => HENTAIGANA_LETTER_RO_DASH_3,
KanaExtendedA::HentaiganaLetterRoDash4 => HENTAIGANA_LETTER_RO_DASH_4,
KanaExtendedA::HentaiganaLetterRoDash5 => HENTAIGANA_LETTER_RO_DASH_5,
KanaExtendedA::HentaiganaLetterRoDash6 => HENTAIGANA_LETTER_RO_DASH_6,
KanaExtendedA::HentaiganaLetterWaDash1 => HENTAIGANA_LETTER_WA_DASH_1,
KanaExtendedA::HentaiganaLetterWaDash2 => HENTAIGANA_LETTER_WA_DASH_2,
KanaExtendedA::HentaiganaLetterWaDash3 => HENTAIGANA_LETTER_WA_DASH_3,
KanaExtendedA::HentaiganaLetterWaDash4 => HENTAIGANA_LETTER_WA_DASH_4,
KanaExtendedA::HentaiganaLetterWaDash5 => HENTAIGANA_LETTER_WA_DASH_5,
KanaExtendedA::HentaiganaLetterWiDash1 => HENTAIGANA_LETTER_WI_DASH_1,
KanaExtendedA::HentaiganaLetterWiDash2 => HENTAIGANA_LETTER_WI_DASH_2,
KanaExtendedA::HentaiganaLetterWiDash3 => HENTAIGANA_LETTER_WI_DASH_3,
KanaExtendedA::HentaiganaLetterWiDash4 => HENTAIGANA_LETTER_WI_DASH_4,
KanaExtendedA::HentaiganaLetterWiDash5 => HENTAIGANA_LETTER_WI_DASH_5,
KanaExtendedA::HentaiganaLetterWeDash1 => HENTAIGANA_LETTER_WE_DASH_1,
KanaExtendedA::HentaiganaLetterWeDash2 => HENTAIGANA_LETTER_WE_DASH_2,
KanaExtendedA::HentaiganaLetterWeDash3 => HENTAIGANA_LETTER_WE_DASH_3,
KanaExtendedA::HentaiganaLetterWeDash4 => HENTAIGANA_LETTER_WE_DASH_4,
KanaExtendedA::HentaiganaLetterWoDash1 => HENTAIGANA_LETTER_WO_DASH_1,
KanaExtendedA::HentaiganaLetterWoDash2 => HENTAIGANA_LETTER_WO_DASH_2,
KanaExtendedA::HentaiganaLetterWoDash3 => HENTAIGANA_LETTER_WO_DASH_3,
KanaExtendedA::HentaiganaLetterWoDash4 => HENTAIGANA_LETTER_WO_DASH_4,
KanaExtendedA::HentaiganaLetterWoDash5 => HENTAIGANA_LETTER_WO_DASH_5,
KanaExtendedA::HentaiganaLetterWoDash6 => HENTAIGANA_LETTER_WO_DASH_6,
KanaExtendedA::HentaiganaLetterWoDash7 => HENTAIGANA_LETTER_WO_DASH_7,
KanaExtendedA::HentaiganaLetterNDashMuDashMoDash1 => HENTAIGANA_LETTER_N_DASH_MU_DASH_MO_DASH_1,
KanaExtendedA::HentaiganaLetterNDashMuDashMoDash2 => HENTAIGANA_LETTER_N_DASH_MU_DASH_MO_DASH_2,
}
}
}
impl std::convert::TryFrom<char> for KanaExtendedA {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
HENTAIGANA_LETTER_RE_DASH_3 => Ok(KanaExtendedA::HentaiganaLetterReDash3),
HENTAIGANA_LETTER_RE_DASH_4 => Ok(KanaExtendedA::HentaiganaLetterReDash4),
HENTAIGANA_LETTER_RO_DASH_1 => Ok(KanaExtendedA::HentaiganaLetterRoDash1),
HENTAIGANA_LETTER_RO_DASH_2 => Ok(KanaExtendedA::HentaiganaLetterRoDash2),
HENTAIGANA_LETTER_RO_DASH_3 => Ok(KanaExtendedA::HentaiganaLetterRoDash3),
HENTAIGANA_LETTER_RO_DASH_4 => Ok(KanaExtendedA::HentaiganaLetterRoDash4),
HENTAIGANA_LETTER_RO_DASH_5 => Ok(KanaExtendedA::HentaiganaLetterRoDash5),
HENTAIGANA_LETTER_RO_DASH_6 => Ok(KanaExtendedA::HentaiganaLetterRoDash6),
HENTAIGANA_LETTER_WA_DASH_1 => Ok(KanaExtendedA::HentaiganaLetterWaDash1),
HENTAIGANA_LETTER_WA_DASH_2 => Ok(KanaExtendedA::HentaiganaLetterWaDash2),
HENTAIGANA_LETTER_WA_DASH_3 => Ok(KanaExtendedA::HentaiganaLetterWaDash3),
HENTAIGANA_LETTER_WA_DASH_4 => Ok(KanaExtendedA::HentaiganaLetterWaDash4),
HENTAIGANA_LETTER_WA_DASH_5 => Ok(KanaExtendedA::HentaiganaLetterWaDash5),
HENTAIGANA_LETTER_WI_DASH_1 => Ok(KanaExtendedA::HentaiganaLetterWiDash1),
HENTAIGANA_LETTER_WI_DASH_2 => Ok(KanaExtendedA::HentaiganaLetterWiDash2),
HENTAIGANA_LETTER_WI_DASH_3 => Ok(KanaExtendedA::HentaiganaLetterWiDash3),
HENTAIGANA_LETTER_WI_DASH_4 => Ok(KanaExtendedA::HentaiganaLetterWiDash4),
HENTAIGANA_LETTER_WI_DASH_5 => Ok(KanaExtendedA::HentaiganaLetterWiDash5),
HENTAIGANA_LETTER_WE_DASH_1 => Ok(KanaExtendedA::HentaiganaLetterWeDash1),
HENTAIGANA_LETTER_WE_DASH_2 => Ok(KanaExtendedA::HentaiganaLetterWeDash2),
HENTAIGANA_LETTER_WE_DASH_3 => Ok(KanaExtendedA::HentaiganaLetterWeDash3),
HENTAIGANA_LETTER_WE_DASH_4 => Ok(KanaExtendedA::HentaiganaLetterWeDash4),
HENTAIGANA_LETTER_WO_DASH_1 => Ok(KanaExtendedA::HentaiganaLetterWoDash1),
HENTAIGANA_LETTER_WO_DASH_2 => Ok(KanaExtendedA::HentaiganaLetterWoDash2),
HENTAIGANA_LETTER_WO_DASH_3 => Ok(KanaExtendedA::HentaiganaLetterWoDash3),
HENTAIGANA_LETTER_WO_DASH_4 => Ok(KanaExtendedA::HentaiganaLetterWoDash4),
HENTAIGANA_LETTER_WO_DASH_5 => Ok(KanaExtendedA::HentaiganaLetterWoDash5),
HENTAIGANA_LETTER_WO_DASH_6 => Ok(KanaExtendedA::HentaiganaLetterWoDash6),
HENTAIGANA_LETTER_WO_DASH_7 => Ok(KanaExtendedA::HentaiganaLetterWoDash7),
HENTAIGANA_LETTER_N_DASH_MU_DASH_MO_DASH_1 => Ok(KanaExtendedA::HentaiganaLetterNDashMuDashMoDash1),
HENTAIGANA_LETTER_N_DASH_MU_DASH_MO_DASH_2 => Ok(KanaExtendedA::HentaiganaLetterNDashMuDashMoDash2),
_ => Err(()),
}
}
}
impl Into<u32> for KanaExtendedA {
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 KanaExtendedA {
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 KanaExtendedA {
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 KanaExtendedA {
pub fn new() -> Self {
KanaExtendedA::HentaiganaLetterReDash3
}
pub fn name(&self) -> &str {
match self {
KanaExtendedA::HentaiganaLetterReDash3 => "hentaigana letter re-3",
KanaExtendedA::HentaiganaLetterReDash4 => "hentaigana letter re-4",
KanaExtendedA::HentaiganaLetterRoDash1 => "hentaigana letter ro-1",
KanaExtendedA::HentaiganaLetterRoDash2 => "hentaigana letter ro-2",
KanaExtendedA::HentaiganaLetterRoDash3 => "hentaigana letter ro-3",
KanaExtendedA::HentaiganaLetterRoDash4 => "hentaigana letter ro-4",
KanaExtendedA::HentaiganaLetterRoDash5 => "hentaigana letter ro-5",
KanaExtendedA::HentaiganaLetterRoDash6 => "hentaigana letter ro-6",
KanaExtendedA::HentaiganaLetterWaDash1 => "hentaigana letter wa-1",
KanaExtendedA::HentaiganaLetterWaDash2 => "hentaigana letter wa-2",
KanaExtendedA::HentaiganaLetterWaDash3 => "hentaigana letter wa-3",
KanaExtendedA::HentaiganaLetterWaDash4 => "hentaigana letter wa-4",
KanaExtendedA::HentaiganaLetterWaDash5 => "hentaigana letter wa-5",
KanaExtendedA::HentaiganaLetterWiDash1 => "hentaigana letter wi-1",
KanaExtendedA::HentaiganaLetterWiDash2 => "hentaigana letter wi-2",
KanaExtendedA::HentaiganaLetterWiDash3 => "hentaigana letter wi-3",
KanaExtendedA::HentaiganaLetterWiDash4 => "hentaigana letter wi-4",
KanaExtendedA::HentaiganaLetterWiDash5 => "hentaigana letter wi-5",
KanaExtendedA::HentaiganaLetterWeDash1 => "hentaigana letter we-1",
KanaExtendedA::HentaiganaLetterWeDash2 => "hentaigana letter we-2",
KanaExtendedA::HentaiganaLetterWeDash3 => "hentaigana letter we-3",
KanaExtendedA::HentaiganaLetterWeDash4 => "hentaigana letter we-4",
KanaExtendedA::HentaiganaLetterWoDash1 => "hentaigana letter wo-1",
KanaExtendedA::HentaiganaLetterWoDash2 => "hentaigana letter wo-2",
KanaExtendedA::HentaiganaLetterWoDash3 => "hentaigana letter wo-3",
KanaExtendedA::HentaiganaLetterWoDash4 => "hentaigana letter wo-4",
KanaExtendedA::HentaiganaLetterWoDash5 => "hentaigana letter wo-5",
KanaExtendedA::HentaiganaLetterWoDash6 => "hentaigana letter wo-6",
KanaExtendedA::HentaiganaLetterWoDash7 => "hentaigana letter wo-7",
KanaExtendedA::HentaiganaLetterNDashMuDashMoDash1 => "hentaigana letter n-mu-mo-1",
KanaExtendedA::HentaiganaLetterNDashMuDashMoDash2 => "hentaigana letter n-mu-mo-2",
}
}
}