mod constants {
pub const LATIN_CAPITAL_LETTER_L_WITH_DOUBLE_BAR: char = 'Ⱡ';
pub const LATIN_SMALL_LETTER_L_WITH_DOUBLE_BAR: char = 'ⱡ';
pub const LATIN_CAPITAL_LETTER_L_WITH_MIDDLE_TILDE: char = 'Ɫ';
pub const LATIN_CAPITAL_LETTER_P_WITH_STROKE: char = 'Ᵽ';
pub const LATIN_CAPITAL_LETTER_R_WITH_TAIL: char = 'Ɽ';
pub const LATIN_SMALL_LETTER_A_WITH_STROKE: char = 'ⱥ';
pub const LATIN_SMALL_LETTER_T_WITH_DIAGONAL_STROKE: char = 'ⱦ';
pub const LATIN_CAPITAL_LETTER_H_WITH_DESCENDER: char = 'Ⱨ';
pub const LATIN_SMALL_LETTER_H_WITH_DESCENDER: char = 'ⱨ';
pub const LATIN_CAPITAL_LETTER_K_WITH_DESCENDER: char = 'Ⱪ';
pub const LATIN_SMALL_LETTER_K_WITH_DESCENDER: char = 'ⱪ';
pub const LATIN_CAPITAL_LETTER_Z_WITH_DESCENDER: char = 'Ⱬ';
pub const LATIN_SMALL_LETTER_Z_WITH_DESCENDER: char = 'ⱬ';
pub const LATIN_CAPITAL_LETTER_ALPHA: char = 'Ɑ';
pub const LATIN_CAPITAL_LETTER_M_WITH_HOOK: char = 'Ɱ';
pub const LATIN_CAPITAL_LETTER_TURNED_A: char = 'Ɐ';
pub const LATIN_CAPITAL_LETTER_TURNED_ALPHA: char = 'Ɒ';
pub const LATIN_SMALL_LETTER_V_WITH_RIGHT_HOOK: char = 'ⱱ';
pub const LATIN_CAPITAL_LETTER_W_WITH_HOOK: char = 'Ⱳ';
pub const LATIN_SMALL_LETTER_W_WITH_HOOK: char = 'ⱳ';
pub const LATIN_SMALL_LETTER_V_WITH_CURL: char = 'ⱴ';
pub const LATIN_CAPITAL_LETTER_HALF_H: char = 'Ⱶ';
pub const LATIN_SMALL_LETTER_HALF_H: char = 'ⱶ';
pub const LATIN_SMALL_LETTER_TAILLESS_PHI: char = 'ⱷ';
pub const LATIN_SMALL_LETTER_E_WITH_NOTCH: char = 'ⱸ';
pub const LATIN_SMALL_LETTER_TURNED_R_WITH_TAIL: char = 'ⱹ';
pub const LATIN_SMALL_LETTER_O_WITH_LOW_RING_INSIDE: char = 'ⱺ';
pub const LATIN_LETTER_SMALL_CAPITAL_TURNED_E: char = 'ⱻ';
pub const LATIN_SUBSCRIPT_SMALL_LETTER_J: char = 'ⱼ';
pub const MODIFIER_LETTER_CAPITAL_V: char = 'ⱽ';
pub const LATIN_CAPITAL_LETTER_S_WITH_SWASH_TAIL: char = 'Ȿ';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum LatinExtendedC {
LatinCapitalLetterLWithDoubleBar,
LatinSmallLetterLWithDoubleBar,
LatinCapitalLetterLWithMiddleTilde,
LatinCapitalLetterPWithStroke,
LatinCapitalLetterRWithTail,
LatinSmallLetterAWithStroke,
LatinSmallLetterTWithDiagonalStroke,
LatinCapitalLetterHWithDescender,
LatinSmallLetterHWithDescender,
LatinCapitalLetterKWithDescender,
LatinSmallLetterKWithDescender,
LatinCapitalLetterZWithDescender,
LatinSmallLetterZWithDescender,
LatinCapitalLetterAlpha,
LatinCapitalLetterMWithHook,
LatinCapitalLetterTurnedA,
LatinCapitalLetterTurnedAlpha,
LatinSmallLetterVWithRightHook,
LatinCapitalLetterWWithHook,
LatinSmallLetterWWithHook,
LatinSmallLetterVWithCurl,
LatinCapitalLetterHalfH,
LatinSmallLetterHalfH,
LatinSmallLetterTaillessPhi,
LatinSmallLetterEWithNotch,
LatinSmallLetterTurnedRWithTail,
LatinSmallLetterOWithLowRingInside,
LatinLetterSmallCapitalTurnedE,
LatinSubscriptSmallLetterJ,
ModifierLetterCapitalV,
LatinCapitalLetterSWithSwashTail,
}
impl Into<char> for LatinExtendedC {
fn into(self) -> char {
use constants::*;
match self {
LatinExtendedC::LatinCapitalLetterLWithDoubleBar => LATIN_CAPITAL_LETTER_L_WITH_DOUBLE_BAR,
LatinExtendedC::LatinSmallLetterLWithDoubleBar => LATIN_SMALL_LETTER_L_WITH_DOUBLE_BAR,
LatinExtendedC::LatinCapitalLetterLWithMiddleTilde => LATIN_CAPITAL_LETTER_L_WITH_MIDDLE_TILDE,
LatinExtendedC::LatinCapitalLetterPWithStroke => LATIN_CAPITAL_LETTER_P_WITH_STROKE,
LatinExtendedC::LatinCapitalLetterRWithTail => LATIN_CAPITAL_LETTER_R_WITH_TAIL,
LatinExtendedC::LatinSmallLetterAWithStroke => LATIN_SMALL_LETTER_A_WITH_STROKE,
LatinExtendedC::LatinSmallLetterTWithDiagonalStroke => LATIN_SMALL_LETTER_T_WITH_DIAGONAL_STROKE,
LatinExtendedC::LatinCapitalLetterHWithDescender => LATIN_CAPITAL_LETTER_H_WITH_DESCENDER,
LatinExtendedC::LatinSmallLetterHWithDescender => LATIN_SMALL_LETTER_H_WITH_DESCENDER,
LatinExtendedC::LatinCapitalLetterKWithDescender => LATIN_CAPITAL_LETTER_K_WITH_DESCENDER,
LatinExtendedC::LatinSmallLetterKWithDescender => LATIN_SMALL_LETTER_K_WITH_DESCENDER,
LatinExtendedC::LatinCapitalLetterZWithDescender => LATIN_CAPITAL_LETTER_Z_WITH_DESCENDER,
LatinExtendedC::LatinSmallLetterZWithDescender => LATIN_SMALL_LETTER_Z_WITH_DESCENDER,
LatinExtendedC::LatinCapitalLetterAlpha => LATIN_CAPITAL_LETTER_ALPHA,
LatinExtendedC::LatinCapitalLetterMWithHook => LATIN_CAPITAL_LETTER_M_WITH_HOOK,
LatinExtendedC::LatinCapitalLetterTurnedA => LATIN_CAPITAL_LETTER_TURNED_A,
LatinExtendedC::LatinCapitalLetterTurnedAlpha => LATIN_CAPITAL_LETTER_TURNED_ALPHA,
LatinExtendedC::LatinSmallLetterVWithRightHook => LATIN_SMALL_LETTER_V_WITH_RIGHT_HOOK,
LatinExtendedC::LatinCapitalLetterWWithHook => LATIN_CAPITAL_LETTER_W_WITH_HOOK,
LatinExtendedC::LatinSmallLetterWWithHook => LATIN_SMALL_LETTER_W_WITH_HOOK,
LatinExtendedC::LatinSmallLetterVWithCurl => LATIN_SMALL_LETTER_V_WITH_CURL,
LatinExtendedC::LatinCapitalLetterHalfH => LATIN_CAPITAL_LETTER_HALF_H,
LatinExtendedC::LatinSmallLetterHalfH => LATIN_SMALL_LETTER_HALF_H,
LatinExtendedC::LatinSmallLetterTaillessPhi => LATIN_SMALL_LETTER_TAILLESS_PHI,
LatinExtendedC::LatinSmallLetterEWithNotch => LATIN_SMALL_LETTER_E_WITH_NOTCH,
LatinExtendedC::LatinSmallLetterTurnedRWithTail => LATIN_SMALL_LETTER_TURNED_R_WITH_TAIL,
LatinExtendedC::LatinSmallLetterOWithLowRingInside => LATIN_SMALL_LETTER_O_WITH_LOW_RING_INSIDE,
LatinExtendedC::LatinLetterSmallCapitalTurnedE => LATIN_LETTER_SMALL_CAPITAL_TURNED_E,
LatinExtendedC::LatinSubscriptSmallLetterJ => LATIN_SUBSCRIPT_SMALL_LETTER_J,
LatinExtendedC::ModifierLetterCapitalV => MODIFIER_LETTER_CAPITAL_V,
LatinExtendedC::LatinCapitalLetterSWithSwashTail => LATIN_CAPITAL_LETTER_S_WITH_SWASH_TAIL,
}
}
}
impl std::convert::TryFrom<char> for LatinExtendedC {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
LATIN_CAPITAL_LETTER_L_WITH_DOUBLE_BAR => Ok(LatinExtendedC::LatinCapitalLetterLWithDoubleBar),
LATIN_SMALL_LETTER_L_WITH_DOUBLE_BAR => Ok(LatinExtendedC::LatinSmallLetterLWithDoubleBar),
LATIN_CAPITAL_LETTER_L_WITH_MIDDLE_TILDE => Ok(LatinExtendedC::LatinCapitalLetterLWithMiddleTilde),
LATIN_CAPITAL_LETTER_P_WITH_STROKE => Ok(LatinExtendedC::LatinCapitalLetterPWithStroke),
LATIN_CAPITAL_LETTER_R_WITH_TAIL => Ok(LatinExtendedC::LatinCapitalLetterRWithTail),
LATIN_SMALL_LETTER_A_WITH_STROKE => Ok(LatinExtendedC::LatinSmallLetterAWithStroke),
LATIN_SMALL_LETTER_T_WITH_DIAGONAL_STROKE => Ok(LatinExtendedC::LatinSmallLetterTWithDiagonalStroke),
LATIN_CAPITAL_LETTER_H_WITH_DESCENDER => Ok(LatinExtendedC::LatinCapitalLetterHWithDescender),
LATIN_SMALL_LETTER_H_WITH_DESCENDER => Ok(LatinExtendedC::LatinSmallLetterHWithDescender),
LATIN_CAPITAL_LETTER_K_WITH_DESCENDER => Ok(LatinExtendedC::LatinCapitalLetterKWithDescender),
LATIN_SMALL_LETTER_K_WITH_DESCENDER => Ok(LatinExtendedC::LatinSmallLetterKWithDescender),
LATIN_CAPITAL_LETTER_Z_WITH_DESCENDER => Ok(LatinExtendedC::LatinCapitalLetterZWithDescender),
LATIN_SMALL_LETTER_Z_WITH_DESCENDER => Ok(LatinExtendedC::LatinSmallLetterZWithDescender),
LATIN_CAPITAL_LETTER_ALPHA => Ok(LatinExtendedC::LatinCapitalLetterAlpha),
LATIN_CAPITAL_LETTER_M_WITH_HOOK => Ok(LatinExtendedC::LatinCapitalLetterMWithHook),
LATIN_CAPITAL_LETTER_TURNED_A => Ok(LatinExtendedC::LatinCapitalLetterTurnedA),
LATIN_CAPITAL_LETTER_TURNED_ALPHA => Ok(LatinExtendedC::LatinCapitalLetterTurnedAlpha),
LATIN_SMALL_LETTER_V_WITH_RIGHT_HOOK => Ok(LatinExtendedC::LatinSmallLetterVWithRightHook),
LATIN_CAPITAL_LETTER_W_WITH_HOOK => Ok(LatinExtendedC::LatinCapitalLetterWWithHook),
LATIN_SMALL_LETTER_W_WITH_HOOK => Ok(LatinExtendedC::LatinSmallLetterWWithHook),
LATIN_SMALL_LETTER_V_WITH_CURL => Ok(LatinExtendedC::LatinSmallLetterVWithCurl),
LATIN_CAPITAL_LETTER_HALF_H => Ok(LatinExtendedC::LatinCapitalLetterHalfH),
LATIN_SMALL_LETTER_HALF_H => Ok(LatinExtendedC::LatinSmallLetterHalfH),
LATIN_SMALL_LETTER_TAILLESS_PHI => Ok(LatinExtendedC::LatinSmallLetterTaillessPhi),
LATIN_SMALL_LETTER_E_WITH_NOTCH => Ok(LatinExtendedC::LatinSmallLetterEWithNotch),
LATIN_SMALL_LETTER_TURNED_R_WITH_TAIL => Ok(LatinExtendedC::LatinSmallLetterTurnedRWithTail),
LATIN_SMALL_LETTER_O_WITH_LOW_RING_INSIDE => Ok(LatinExtendedC::LatinSmallLetterOWithLowRingInside),
LATIN_LETTER_SMALL_CAPITAL_TURNED_E => Ok(LatinExtendedC::LatinLetterSmallCapitalTurnedE),
LATIN_SUBSCRIPT_SMALL_LETTER_J => Ok(LatinExtendedC::LatinSubscriptSmallLetterJ),
MODIFIER_LETTER_CAPITAL_V => Ok(LatinExtendedC::ModifierLetterCapitalV),
LATIN_CAPITAL_LETTER_S_WITH_SWASH_TAIL => Ok(LatinExtendedC::LatinCapitalLetterSWithSwashTail),
_ => Err(()),
}
}
}
impl Into<u32> for LatinExtendedC {
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 LatinExtendedC {
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 LatinExtendedC {
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 LatinExtendedC {
pub fn new() -> Self {
LatinExtendedC::LatinCapitalLetterLWithDoubleBar
}
pub fn name(&self) -> &str {
match self {
LatinExtendedC::LatinCapitalLetterLWithDoubleBar => "latin capital letter l with double bar",
LatinExtendedC::LatinSmallLetterLWithDoubleBar => "latin small letter l with double bar",
LatinExtendedC::LatinCapitalLetterLWithMiddleTilde => "latin capital letter l with middle tilde",
LatinExtendedC::LatinCapitalLetterPWithStroke => "latin capital letter p with stroke",
LatinExtendedC::LatinCapitalLetterRWithTail => "latin capital letter r with tail",
LatinExtendedC::LatinSmallLetterAWithStroke => "latin small letter a with stroke",
LatinExtendedC::LatinSmallLetterTWithDiagonalStroke => "latin small letter t with diagonal stroke",
LatinExtendedC::LatinCapitalLetterHWithDescender => "latin capital letter h with descender",
LatinExtendedC::LatinSmallLetterHWithDescender => "latin small letter h with descender",
LatinExtendedC::LatinCapitalLetterKWithDescender => "latin capital letter k with descender",
LatinExtendedC::LatinSmallLetterKWithDescender => "latin small letter k with descender",
LatinExtendedC::LatinCapitalLetterZWithDescender => "latin capital letter z with descender",
LatinExtendedC::LatinSmallLetterZWithDescender => "latin small letter z with descender",
LatinExtendedC::LatinCapitalLetterAlpha => "latin capital letter alpha",
LatinExtendedC::LatinCapitalLetterMWithHook => "latin capital letter m with hook",
LatinExtendedC::LatinCapitalLetterTurnedA => "latin capital letter turned a",
LatinExtendedC::LatinCapitalLetterTurnedAlpha => "latin capital letter turned alpha",
LatinExtendedC::LatinSmallLetterVWithRightHook => "latin small letter v with right hook",
LatinExtendedC::LatinCapitalLetterWWithHook => "latin capital letter w with hook",
LatinExtendedC::LatinSmallLetterWWithHook => "latin small letter w with hook",
LatinExtendedC::LatinSmallLetterVWithCurl => "latin small letter v with curl",
LatinExtendedC::LatinCapitalLetterHalfH => "latin capital letter half h",
LatinExtendedC::LatinSmallLetterHalfH => "latin small letter half h",
LatinExtendedC::LatinSmallLetterTaillessPhi => "latin small letter tailless phi",
LatinExtendedC::LatinSmallLetterEWithNotch => "latin small letter e with notch",
LatinExtendedC::LatinSmallLetterTurnedRWithTail => "latin small letter turned r with tail",
LatinExtendedC::LatinSmallLetterOWithLowRingInside => "latin small letter o with low ring inside",
LatinExtendedC::LatinLetterSmallCapitalTurnedE => "latin letter small capital turned e",
LatinExtendedC::LatinSubscriptSmallLetterJ => "latin subscript small letter j",
LatinExtendedC::ModifierLetterCapitalV => "modifier letter capital v",
LatinExtendedC::LatinCapitalLetterSWithSwashTail => "latin capital letter s with swash tail",
}
}
}