mod constants {
pub const LETTER_H: char = '𛰀';
pub const LETTER_X: char = '𛰁';
pub const LETTER_P: char = '𛰂';
pub const LETTER_T: char = '𛰃';
pub const LETTER_F: char = '𛰄';
pub const LETTER_K: char = '𛰅';
pub const LETTER_L: char = '𛰆';
pub const LETTER_B: char = '𛰇';
pub const LETTER_D: char = '𛰈';
pub const LETTER_V: char = '𛰉';
pub const LETTER_G: char = '𛰊';
pub const LETTER_R: char = '𛰋';
pub const LETTER_P_N: char = '𛰌';
pub const LETTER_D_S: char = '𛰍';
pub const LETTER_F_N: char = '𛰎';
pub const LETTER_K_M: char = '𛰏';
pub const LETTER_R_S: char = '𛰐';
pub const LETTER_TH: char = '𛰑';
pub const LETTER_SLOAN_DH: char = '𛰒';
pub const LETTER_DH: char = '𛰓';
pub const LETTER_KK: char = '𛰔';
pub const LETTER_SLOAN_J: char = '𛰕';
pub const LETTER_HL: char = '𛰖';
pub const LETTER_LH: char = '𛰗';
pub const LETTER_RH: char = '𛰘';
pub const LETTER_M: char = '𛰙';
pub const LETTER_N: char = '𛰚';
pub const LETTER_J: char = '𛰛';
pub const LETTER_S: char = '𛰜';
pub const LETTER_M_N: char = '𛰝';
pub const LETTER_N_M: char = '𛰞';
pub const LETTER_J_M: char = '𛰟';
pub const LETTER_S_J: char = '𛰠';
pub const LETTER_M_WITH_DOT: char = '𛰡';
pub const LETTER_N_WITH_DOT: char = '𛰢';
pub const LETTER_J_WITH_DOT: char = '𛰣';
pub const LETTER_J_WITH_DOTS_INSIDE_AND_ABOVE: char = '𛰤';
pub const LETTER_S_WITH_DOT: char = '𛰥';
pub const LETTER_S_WITH_DOT_BELOW: char = '𛰦';
pub const LETTER_M_S: char = '𛰧';
pub const LETTER_N_S: char = '𛰨';
pub const LETTER_J_S: char = '𛰩';
pub const LETTER_S_S: char = '𛰪';
pub const LETTER_M_N_S: char = '𛰫';
pub const LETTER_N_M_S: char = '𛰬';
pub const LETTER_J_M_S: char = '𛰭';
pub const LETTER_S_J_S: char = '𛰮';
pub const LETTER_J_S_WITH_DOT: char = '𛰯';
pub const LETTER_J_N: char = '𛰰';
pub const LETTER_J_N_S: char = '𛰱';
pub const LETTER_S_T: char = '𛰲';
pub const LETTER_S_T_R: char = '𛰳';
pub const LETTER_S_P: char = '𛰴';
pub const LETTER_S_P_R: char = '𛰵';
pub const LETTER_T_S: char = '𛰶';
pub const LETTER_T_R_S: char = '𛰷';
pub const LETTER_W: char = '𛰸';
pub const LETTER_WH: char = '𛰹';
pub const LETTER_W_R: char = '𛰺';
pub const LETTER_S_N: char = '𛰻';
pub const LETTER_S_M: char = '𛰼';
pub const LETTER_K_R_S: char = '𛰽';
pub const LETTER_G_R_S: char = '𛰾';
pub const LETTER_S_K: char = '𛰿';
pub const LETTER_S_K_R: char = '𛱀';
pub const LETTER_A: char = '𛱁';
pub const LETTER_SLOAN_OW: char = '𛱂';
pub const LETTER_OA: char = '𛱃';
pub const LETTER_O: char = '𛱄';
pub const LETTER_AOU: char = '𛱅';
pub const LETTER_I: char = '𛱆';
pub const LETTER_E: char = '𛱇';
pub const LETTER_IE: char = '𛱈';
pub const LETTER_SHORT_I: char = '𛱉';
pub const LETTER_UI: char = '𛱊';
pub const LETTER_EE: char = '𛱋';
pub const LETTER_SLOAN_EH: char = '𛱌';
pub const LETTER_ROMANIAN_I: char = '𛱍';
pub const LETTER_SLOAN_EE: char = '𛱎';
pub const LETTER_LONG_I: char = '𛱏';
pub const LETTER_YE: char = '𛱐';
pub const LETTER_U: char = '𛱑';
pub const LETTER_EU: char = '𛱒';
pub const LETTER_XW: char = '𛱓';
pub const LETTER_U_N: char = '𛱔';
pub const LETTER_LONG_U: char = '𛱕';
pub const LETTER_ROMANIAN_U: char = '𛱖';
pub const LETTER_UH: char = '𛱗';
pub const LETTER_SLOAN_U: char = '𛱘';
pub const LETTER_OOH: char = '𛱙';
pub const LETTER_OW: char = '𛱚';
pub const LETTER_OU: char = '𛱛';
pub const LETTER_WA: char = '𛱜';
pub const LETTER_WO: char = '𛱝';
pub const LETTER_WI: char = '𛱞';
pub const LETTER_WEI: char = '𛱟';
pub const LETTER_WOW: char = '𛱠';
pub const LETTER_NASAL_U: char = '𛱡';
pub const LETTER_NASAL_O: char = '𛱢';
pub const LETTER_NASAL_I: char = '𛱣';
pub const LETTER_NASAL_A: char = '𛱤';
pub const LETTER_PERNIN_AN: char = '𛱥';
pub const LETTER_PERNIN_AM: char = '𛱦';
pub const LETTER_SLOAN_EN: char = '𛱧';
pub const LETTER_SLOAN_AN: char = '𛱨';
pub const LETTER_SLOAN_ON: char = '𛱩';
pub const LETTER_VOCALIC_M: char = '𛱪';
pub const AFFIX_LEFT_HORIZONTAL_SECANT: char = '𛱰';
pub const AFFIX_MID_HORIZONTAL_SECANT: char = '𛱱';
pub const AFFIX_RIGHT_HORIZONTAL_SECANT: char = '𛱲';
pub const AFFIX_LOW_VERTICAL_SECANT: char = '𛱳';
pub const AFFIX_MID_VERTICAL_SECANT: char = '𛱴';
pub const AFFIX_HIGH_VERTICAL_SECANT: char = '𛱵';
pub const AFFIX_ATTACHED_SECANT: char = '𛱶';
pub const AFFIX_ATTACHED_LEFT_DASH_TO_DASH_RIGHT_SECANT: char = '𛱷';
pub const AFFIX_ATTACHED_TANGENT: char = '𛱸';
pub const AFFIX_ATTACHED_TAIL: char = '𛱹';
pub const AFFIX_ATTACHED_E_HOOK: char = '𛱺';
pub const AFFIX_ATTACHED_I_HOOK: char = '𛱻';
pub const AFFIX_ATTACHED_TANGENT_HOOK: char = '𛱼';
pub const AFFIX_HIGH_ACUTE: char = '𛲀';
pub const AFFIX_HIGH_TIGHT_ACUTE: char = '𛲁';
pub const AFFIX_HIGH_GRAVE: char = '𛲂';
pub const AFFIX_HIGH_LONG_GRAVE: char = '𛲃';
pub const AFFIX_HIGH_DOT: char = '𛲄';
pub const AFFIX_HIGH_CIRCLE: char = '𛲅';
pub const AFFIX_HIGH_LINE: char = '𛲆';
pub const AFFIX_HIGH_WAVE: char = '𛲇';
pub const AFFIX_HIGH_VERTICAL: char = '𛲈';
pub const AFFIX_LOW_ACUTE: char = '𛲐';
pub const AFFIX_LOW_TIGHT_ACUTE: char = '𛲑';
pub const AFFIX_LOW_GRAVE: char = '𛲒';
pub const AFFIX_LOW_LONG_GRAVE: char = '𛲓';
pub const AFFIX_LOW_DOT: char = '𛲔';
pub const AFFIX_LOW_CIRCLE: char = '𛲕';
pub const AFFIX_LOW_LINE: char = '𛲖';
pub const AFFIX_LOW_WAVE: char = '𛲗';
pub const AFFIX_LOW_VERTICAL: char = '𛲘';
pub const AFFIX_LOW_ARROW: char = '𛲙';
pub const SIGN_O_WITH_CROSS: char = '𛲜';
pub const THICK_LETTER_SELECTOR: char = '𛲝';
pub const DOUBLE_MARK: char = '𛲞';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Duployan {
LetterH,
LetterX,
LetterP,
LetterT,
LetterF,
LetterK,
LetterL,
LetterB,
LetterD,
LetterV,
LetterG,
LetterR,
LetterPN,
LetterDS,
LetterFN,
LetterKM,
LetterRS,
LetterTh,
LetterSloanDh,
LetterDh,
LetterKk,
LetterSloanJ,
LetterHl,
LetterLh,
LetterRh,
LetterM,
LetterN,
LetterJ,
LetterS,
LetterMN,
LetterNM,
LetterJM,
LetterSJ,
LetterMWithDot,
LetterNWithDot,
LetterJWithDot,
LetterJWithDotsInsideAndAbove,
LetterSWithDot,
LetterSWithDotBelow,
LetterMS,
LetterNS,
LetterJS,
LetterSS,
LetterMNS,
LetterNMS,
LetterJMS,
LetterSJS,
LetterJSWithDot,
LetterJN,
LetterJNS,
LetterST,
LetterSTR,
LetterSP,
LetterSPR,
LetterTS,
LetterTRS,
LetterW,
LetterWh,
LetterWR,
LetterSN,
LetterSM,
LetterKRS,
LetterGRS,
LetterSK,
LetterSKR,
LetterA,
LetterSloanOw,
LetterOa,
LetterO,
LetterAou,
LetterI,
LetterE,
LetterIe,
LetterShortI,
LetterUi,
LetterEe,
LetterSloanEh,
LetterRomanianI,
LetterSloanEe,
LetterLongI,
LetterYe,
LetterU,
LetterEu,
LetterXw,
LetterUN,
LetterLongU,
LetterRomanianU,
LetterUh,
LetterSloanU,
LetterOoh,
LetterOw,
LetterOu,
LetterWa,
LetterWo,
LetterWi,
LetterWei,
LetterWow,
LetterNasalU,
LetterNasalO,
LetterNasalI,
LetterNasalA,
LetterPerninAn,
LetterPerninAm,
LetterSloanEn,
LetterSloanAn,
LetterSloanOn,
LetterVocalicM,
AffixLeftHorizontalSecant,
AffixMidHorizontalSecant,
AffixRightHorizontalSecant,
AffixLowVerticalSecant,
AffixMidVerticalSecant,
AffixHighVerticalSecant,
AffixAttachedSecant,
AffixAttachedLeftDashToDashRightSecant,
AffixAttachedTangent,
AffixAttachedTail,
AffixAttachedEHook,
AffixAttachedIHook,
AffixAttachedTangentHook,
AffixHighAcute,
AffixHighTightAcute,
AffixHighGrave,
AffixHighLongGrave,
AffixHighDot,
AffixHighCircle,
AffixHighLine,
AffixHighWave,
AffixHighVertical,
AffixLowAcute,
AffixLowTightAcute,
AffixLowGrave,
AffixLowLongGrave,
AffixLowDot,
AffixLowCircle,
AffixLowLine,
AffixLowWave,
AffixLowVertical,
AffixLowArrow,
SignOWithCross,
ThickLetterSelector,
DoubleMark,
}
impl Into<char> for Duployan {
fn into(self) -> char {
use constants::*;
match self {
Duployan::LetterH => LETTER_H,
Duployan::LetterX => LETTER_X,
Duployan::LetterP => LETTER_P,
Duployan::LetterT => LETTER_T,
Duployan::LetterF => LETTER_F,
Duployan::LetterK => LETTER_K,
Duployan::LetterL => LETTER_L,
Duployan::LetterB => LETTER_B,
Duployan::LetterD => LETTER_D,
Duployan::LetterV => LETTER_V,
Duployan::LetterG => LETTER_G,
Duployan::LetterR => LETTER_R,
Duployan::LetterPN => LETTER_P_N,
Duployan::LetterDS => LETTER_D_S,
Duployan::LetterFN => LETTER_F_N,
Duployan::LetterKM => LETTER_K_M,
Duployan::LetterRS => LETTER_R_S,
Duployan::LetterTh => LETTER_TH,
Duployan::LetterSloanDh => LETTER_SLOAN_DH,
Duployan::LetterDh => LETTER_DH,
Duployan::LetterKk => LETTER_KK,
Duployan::LetterSloanJ => LETTER_SLOAN_J,
Duployan::LetterHl => LETTER_HL,
Duployan::LetterLh => LETTER_LH,
Duployan::LetterRh => LETTER_RH,
Duployan::LetterM => LETTER_M,
Duployan::LetterN => LETTER_N,
Duployan::LetterJ => LETTER_J,
Duployan::LetterS => LETTER_S,
Duployan::LetterMN => LETTER_M_N,
Duployan::LetterNM => LETTER_N_M,
Duployan::LetterJM => LETTER_J_M,
Duployan::LetterSJ => LETTER_S_J,
Duployan::LetterMWithDot => LETTER_M_WITH_DOT,
Duployan::LetterNWithDot => LETTER_N_WITH_DOT,
Duployan::LetterJWithDot => LETTER_J_WITH_DOT,
Duployan::LetterJWithDotsInsideAndAbove => LETTER_J_WITH_DOTS_INSIDE_AND_ABOVE,
Duployan::LetterSWithDot => LETTER_S_WITH_DOT,
Duployan::LetterSWithDotBelow => LETTER_S_WITH_DOT_BELOW,
Duployan::LetterMS => LETTER_M_S,
Duployan::LetterNS => LETTER_N_S,
Duployan::LetterJS => LETTER_J_S,
Duployan::LetterSS => LETTER_S_S,
Duployan::LetterMNS => LETTER_M_N_S,
Duployan::LetterNMS => LETTER_N_M_S,
Duployan::LetterJMS => LETTER_J_M_S,
Duployan::LetterSJS => LETTER_S_J_S,
Duployan::LetterJSWithDot => LETTER_J_S_WITH_DOT,
Duployan::LetterJN => LETTER_J_N,
Duployan::LetterJNS => LETTER_J_N_S,
Duployan::LetterST => LETTER_S_T,
Duployan::LetterSTR => LETTER_S_T_R,
Duployan::LetterSP => LETTER_S_P,
Duployan::LetterSPR => LETTER_S_P_R,
Duployan::LetterTS => LETTER_T_S,
Duployan::LetterTRS => LETTER_T_R_S,
Duployan::LetterW => LETTER_W,
Duployan::LetterWh => LETTER_WH,
Duployan::LetterWR => LETTER_W_R,
Duployan::LetterSN => LETTER_S_N,
Duployan::LetterSM => LETTER_S_M,
Duployan::LetterKRS => LETTER_K_R_S,
Duployan::LetterGRS => LETTER_G_R_S,
Duployan::LetterSK => LETTER_S_K,
Duployan::LetterSKR => LETTER_S_K_R,
Duployan::LetterA => LETTER_A,
Duployan::LetterSloanOw => LETTER_SLOAN_OW,
Duployan::LetterOa => LETTER_OA,
Duployan::LetterO => LETTER_O,
Duployan::LetterAou => LETTER_AOU,
Duployan::LetterI => LETTER_I,
Duployan::LetterE => LETTER_E,
Duployan::LetterIe => LETTER_IE,
Duployan::LetterShortI => LETTER_SHORT_I,
Duployan::LetterUi => LETTER_UI,
Duployan::LetterEe => LETTER_EE,
Duployan::LetterSloanEh => LETTER_SLOAN_EH,
Duployan::LetterRomanianI => LETTER_ROMANIAN_I,
Duployan::LetterSloanEe => LETTER_SLOAN_EE,
Duployan::LetterLongI => LETTER_LONG_I,
Duployan::LetterYe => LETTER_YE,
Duployan::LetterU => LETTER_U,
Duployan::LetterEu => LETTER_EU,
Duployan::LetterXw => LETTER_XW,
Duployan::LetterUN => LETTER_U_N,
Duployan::LetterLongU => LETTER_LONG_U,
Duployan::LetterRomanianU => LETTER_ROMANIAN_U,
Duployan::LetterUh => LETTER_UH,
Duployan::LetterSloanU => LETTER_SLOAN_U,
Duployan::LetterOoh => LETTER_OOH,
Duployan::LetterOw => LETTER_OW,
Duployan::LetterOu => LETTER_OU,
Duployan::LetterWa => LETTER_WA,
Duployan::LetterWo => LETTER_WO,
Duployan::LetterWi => LETTER_WI,
Duployan::LetterWei => LETTER_WEI,
Duployan::LetterWow => LETTER_WOW,
Duployan::LetterNasalU => LETTER_NASAL_U,
Duployan::LetterNasalO => LETTER_NASAL_O,
Duployan::LetterNasalI => LETTER_NASAL_I,
Duployan::LetterNasalA => LETTER_NASAL_A,
Duployan::LetterPerninAn => LETTER_PERNIN_AN,
Duployan::LetterPerninAm => LETTER_PERNIN_AM,
Duployan::LetterSloanEn => LETTER_SLOAN_EN,
Duployan::LetterSloanAn => LETTER_SLOAN_AN,
Duployan::LetterSloanOn => LETTER_SLOAN_ON,
Duployan::LetterVocalicM => LETTER_VOCALIC_M,
Duployan::AffixLeftHorizontalSecant => AFFIX_LEFT_HORIZONTAL_SECANT,
Duployan::AffixMidHorizontalSecant => AFFIX_MID_HORIZONTAL_SECANT,
Duployan::AffixRightHorizontalSecant => AFFIX_RIGHT_HORIZONTAL_SECANT,
Duployan::AffixLowVerticalSecant => AFFIX_LOW_VERTICAL_SECANT,
Duployan::AffixMidVerticalSecant => AFFIX_MID_VERTICAL_SECANT,
Duployan::AffixHighVerticalSecant => AFFIX_HIGH_VERTICAL_SECANT,
Duployan::AffixAttachedSecant => AFFIX_ATTACHED_SECANT,
Duployan::AffixAttachedLeftDashToDashRightSecant => AFFIX_ATTACHED_LEFT_DASH_TO_DASH_RIGHT_SECANT,
Duployan::AffixAttachedTangent => AFFIX_ATTACHED_TANGENT,
Duployan::AffixAttachedTail => AFFIX_ATTACHED_TAIL,
Duployan::AffixAttachedEHook => AFFIX_ATTACHED_E_HOOK,
Duployan::AffixAttachedIHook => AFFIX_ATTACHED_I_HOOK,
Duployan::AffixAttachedTangentHook => AFFIX_ATTACHED_TANGENT_HOOK,
Duployan::AffixHighAcute => AFFIX_HIGH_ACUTE,
Duployan::AffixHighTightAcute => AFFIX_HIGH_TIGHT_ACUTE,
Duployan::AffixHighGrave => AFFIX_HIGH_GRAVE,
Duployan::AffixHighLongGrave => AFFIX_HIGH_LONG_GRAVE,
Duployan::AffixHighDot => AFFIX_HIGH_DOT,
Duployan::AffixHighCircle => AFFIX_HIGH_CIRCLE,
Duployan::AffixHighLine => AFFIX_HIGH_LINE,
Duployan::AffixHighWave => AFFIX_HIGH_WAVE,
Duployan::AffixHighVertical => AFFIX_HIGH_VERTICAL,
Duployan::AffixLowAcute => AFFIX_LOW_ACUTE,
Duployan::AffixLowTightAcute => AFFIX_LOW_TIGHT_ACUTE,
Duployan::AffixLowGrave => AFFIX_LOW_GRAVE,
Duployan::AffixLowLongGrave => AFFIX_LOW_LONG_GRAVE,
Duployan::AffixLowDot => AFFIX_LOW_DOT,
Duployan::AffixLowCircle => AFFIX_LOW_CIRCLE,
Duployan::AffixLowLine => AFFIX_LOW_LINE,
Duployan::AffixLowWave => AFFIX_LOW_WAVE,
Duployan::AffixLowVertical => AFFIX_LOW_VERTICAL,
Duployan::AffixLowArrow => AFFIX_LOW_ARROW,
Duployan::SignOWithCross => SIGN_O_WITH_CROSS,
Duployan::ThickLetterSelector => THICK_LETTER_SELECTOR,
Duployan::DoubleMark => DOUBLE_MARK,
}
}
}
impl std::convert::TryFrom<char> for Duployan {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
LETTER_H => Ok(Duployan::LetterH),
LETTER_X => Ok(Duployan::LetterX),
LETTER_P => Ok(Duployan::LetterP),
LETTER_T => Ok(Duployan::LetterT),
LETTER_F => Ok(Duployan::LetterF),
LETTER_K => Ok(Duployan::LetterK),
LETTER_L => Ok(Duployan::LetterL),
LETTER_B => Ok(Duployan::LetterB),
LETTER_D => Ok(Duployan::LetterD),
LETTER_V => Ok(Duployan::LetterV),
LETTER_G => Ok(Duployan::LetterG),
LETTER_R => Ok(Duployan::LetterR),
LETTER_P_N => Ok(Duployan::LetterPN),
LETTER_D_S => Ok(Duployan::LetterDS),
LETTER_F_N => Ok(Duployan::LetterFN),
LETTER_K_M => Ok(Duployan::LetterKM),
LETTER_R_S => Ok(Duployan::LetterRS),
LETTER_TH => Ok(Duployan::LetterTh),
LETTER_SLOAN_DH => Ok(Duployan::LetterSloanDh),
LETTER_DH => Ok(Duployan::LetterDh),
LETTER_KK => Ok(Duployan::LetterKk),
LETTER_SLOAN_J => Ok(Duployan::LetterSloanJ),
LETTER_HL => Ok(Duployan::LetterHl),
LETTER_LH => Ok(Duployan::LetterLh),
LETTER_RH => Ok(Duployan::LetterRh),
LETTER_M => Ok(Duployan::LetterM),
LETTER_N => Ok(Duployan::LetterN),
LETTER_J => Ok(Duployan::LetterJ),
LETTER_S => Ok(Duployan::LetterS),
LETTER_M_N => Ok(Duployan::LetterMN),
LETTER_N_M => Ok(Duployan::LetterNM),
LETTER_J_M => Ok(Duployan::LetterJM),
LETTER_S_J => Ok(Duployan::LetterSJ),
LETTER_M_WITH_DOT => Ok(Duployan::LetterMWithDot),
LETTER_N_WITH_DOT => Ok(Duployan::LetterNWithDot),
LETTER_J_WITH_DOT => Ok(Duployan::LetterJWithDot),
LETTER_J_WITH_DOTS_INSIDE_AND_ABOVE => Ok(Duployan::LetterJWithDotsInsideAndAbove),
LETTER_S_WITH_DOT => Ok(Duployan::LetterSWithDot),
LETTER_S_WITH_DOT_BELOW => Ok(Duployan::LetterSWithDotBelow),
LETTER_M_S => Ok(Duployan::LetterMS),
LETTER_N_S => Ok(Duployan::LetterNS),
LETTER_J_S => Ok(Duployan::LetterJS),
LETTER_S_S => Ok(Duployan::LetterSS),
LETTER_M_N_S => Ok(Duployan::LetterMNS),
LETTER_N_M_S => Ok(Duployan::LetterNMS),
LETTER_J_M_S => Ok(Duployan::LetterJMS),
LETTER_S_J_S => Ok(Duployan::LetterSJS),
LETTER_J_S_WITH_DOT => Ok(Duployan::LetterJSWithDot),
LETTER_J_N => Ok(Duployan::LetterJN),
LETTER_J_N_S => Ok(Duployan::LetterJNS),
LETTER_S_T => Ok(Duployan::LetterST),
LETTER_S_T_R => Ok(Duployan::LetterSTR),
LETTER_S_P => Ok(Duployan::LetterSP),
LETTER_S_P_R => Ok(Duployan::LetterSPR),
LETTER_T_S => Ok(Duployan::LetterTS),
LETTER_T_R_S => Ok(Duployan::LetterTRS),
LETTER_W => Ok(Duployan::LetterW),
LETTER_WH => Ok(Duployan::LetterWh),
LETTER_W_R => Ok(Duployan::LetterWR),
LETTER_S_N => Ok(Duployan::LetterSN),
LETTER_S_M => Ok(Duployan::LetterSM),
LETTER_K_R_S => Ok(Duployan::LetterKRS),
LETTER_G_R_S => Ok(Duployan::LetterGRS),
LETTER_S_K => Ok(Duployan::LetterSK),
LETTER_S_K_R => Ok(Duployan::LetterSKR),
LETTER_A => Ok(Duployan::LetterA),
LETTER_SLOAN_OW => Ok(Duployan::LetterSloanOw),
LETTER_OA => Ok(Duployan::LetterOa),
LETTER_O => Ok(Duployan::LetterO),
LETTER_AOU => Ok(Duployan::LetterAou),
LETTER_I => Ok(Duployan::LetterI),
LETTER_E => Ok(Duployan::LetterE),
LETTER_IE => Ok(Duployan::LetterIe),
LETTER_SHORT_I => Ok(Duployan::LetterShortI),
LETTER_UI => Ok(Duployan::LetterUi),
LETTER_EE => Ok(Duployan::LetterEe),
LETTER_SLOAN_EH => Ok(Duployan::LetterSloanEh),
LETTER_ROMANIAN_I => Ok(Duployan::LetterRomanianI),
LETTER_SLOAN_EE => Ok(Duployan::LetterSloanEe),
LETTER_LONG_I => Ok(Duployan::LetterLongI),
LETTER_YE => Ok(Duployan::LetterYe),
LETTER_U => Ok(Duployan::LetterU),
LETTER_EU => Ok(Duployan::LetterEu),
LETTER_XW => Ok(Duployan::LetterXw),
LETTER_U_N => Ok(Duployan::LetterUN),
LETTER_LONG_U => Ok(Duployan::LetterLongU),
LETTER_ROMANIAN_U => Ok(Duployan::LetterRomanianU),
LETTER_UH => Ok(Duployan::LetterUh),
LETTER_SLOAN_U => Ok(Duployan::LetterSloanU),
LETTER_OOH => Ok(Duployan::LetterOoh),
LETTER_OW => Ok(Duployan::LetterOw),
LETTER_OU => Ok(Duployan::LetterOu),
LETTER_WA => Ok(Duployan::LetterWa),
LETTER_WO => Ok(Duployan::LetterWo),
LETTER_WI => Ok(Duployan::LetterWi),
LETTER_WEI => Ok(Duployan::LetterWei),
LETTER_WOW => Ok(Duployan::LetterWow),
LETTER_NASAL_U => Ok(Duployan::LetterNasalU),
LETTER_NASAL_O => Ok(Duployan::LetterNasalO),
LETTER_NASAL_I => Ok(Duployan::LetterNasalI),
LETTER_NASAL_A => Ok(Duployan::LetterNasalA),
LETTER_PERNIN_AN => Ok(Duployan::LetterPerninAn),
LETTER_PERNIN_AM => Ok(Duployan::LetterPerninAm),
LETTER_SLOAN_EN => Ok(Duployan::LetterSloanEn),
LETTER_SLOAN_AN => Ok(Duployan::LetterSloanAn),
LETTER_SLOAN_ON => Ok(Duployan::LetterSloanOn),
LETTER_VOCALIC_M => Ok(Duployan::LetterVocalicM),
AFFIX_LEFT_HORIZONTAL_SECANT => Ok(Duployan::AffixLeftHorizontalSecant),
AFFIX_MID_HORIZONTAL_SECANT => Ok(Duployan::AffixMidHorizontalSecant),
AFFIX_RIGHT_HORIZONTAL_SECANT => Ok(Duployan::AffixRightHorizontalSecant),
AFFIX_LOW_VERTICAL_SECANT => Ok(Duployan::AffixLowVerticalSecant),
AFFIX_MID_VERTICAL_SECANT => Ok(Duployan::AffixMidVerticalSecant),
AFFIX_HIGH_VERTICAL_SECANT => Ok(Duployan::AffixHighVerticalSecant),
AFFIX_ATTACHED_SECANT => Ok(Duployan::AffixAttachedSecant),
AFFIX_ATTACHED_LEFT_DASH_TO_DASH_RIGHT_SECANT => Ok(Duployan::AffixAttachedLeftDashToDashRightSecant),
AFFIX_ATTACHED_TANGENT => Ok(Duployan::AffixAttachedTangent),
AFFIX_ATTACHED_TAIL => Ok(Duployan::AffixAttachedTail),
AFFIX_ATTACHED_E_HOOK => Ok(Duployan::AffixAttachedEHook),
AFFIX_ATTACHED_I_HOOK => Ok(Duployan::AffixAttachedIHook),
AFFIX_ATTACHED_TANGENT_HOOK => Ok(Duployan::AffixAttachedTangentHook),
AFFIX_HIGH_ACUTE => Ok(Duployan::AffixHighAcute),
AFFIX_HIGH_TIGHT_ACUTE => Ok(Duployan::AffixHighTightAcute),
AFFIX_HIGH_GRAVE => Ok(Duployan::AffixHighGrave),
AFFIX_HIGH_LONG_GRAVE => Ok(Duployan::AffixHighLongGrave),
AFFIX_HIGH_DOT => Ok(Duployan::AffixHighDot),
AFFIX_HIGH_CIRCLE => Ok(Duployan::AffixHighCircle),
AFFIX_HIGH_LINE => Ok(Duployan::AffixHighLine),
AFFIX_HIGH_WAVE => Ok(Duployan::AffixHighWave),
AFFIX_HIGH_VERTICAL => Ok(Duployan::AffixHighVertical),
AFFIX_LOW_ACUTE => Ok(Duployan::AffixLowAcute),
AFFIX_LOW_TIGHT_ACUTE => Ok(Duployan::AffixLowTightAcute),
AFFIX_LOW_GRAVE => Ok(Duployan::AffixLowGrave),
AFFIX_LOW_LONG_GRAVE => Ok(Duployan::AffixLowLongGrave),
AFFIX_LOW_DOT => Ok(Duployan::AffixLowDot),
AFFIX_LOW_CIRCLE => Ok(Duployan::AffixLowCircle),
AFFIX_LOW_LINE => Ok(Duployan::AffixLowLine),
AFFIX_LOW_WAVE => Ok(Duployan::AffixLowWave),
AFFIX_LOW_VERTICAL => Ok(Duployan::AffixLowVertical),
AFFIX_LOW_ARROW => Ok(Duployan::AffixLowArrow),
SIGN_O_WITH_CROSS => Ok(Duployan::SignOWithCross),
THICK_LETTER_SELECTOR => Ok(Duployan::ThickLetterSelector),
DOUBLE_MARK => Ok(Duployan::DoubleMark),
_ => Err(()),
}
}
}
impl Into<u32> for Duployan {
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 Duployan {
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 Duployan {
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 Duployan {
pub fn new() -> Self {
Duployan::LetterH
}
pub fn name(&self) -> &str {
match self {
Duployan::LetterH => "duployan letter h",
Duployan::LetterX => "duployan letter x",
Duployan::LetterP => "duployan letter p",
Duployan::LetterT => "duployan letter t",
Duployan::LetterF => "duployan letter f",
Duployan::LetterK => "duployan letter k",
Duployan::LetterL => "duployan letter l",
Duployan::LetterB => "duployan letter b",
Duployan::LetterD => "duployan letter d",
Duployan::LetterV => "duployan letter v",
Duployan::LetterG => "duployan letter g",
Duployan::LetterR => "duployan letter r",
Duployan::LetterPN => "duployan letter p n",
Duployan::LetterDS => "duployan letter d s",
Duployan::LetterFN => "duployan letter f n",
Duployan::LetterKM => "duployan letter k m",
Duployan::LetterRS => "duployan letter r s",
Duployan::LetterTh => "duployan letter th",
Duployan::LetterSloanDh => "duployan letter sloan dh",
Duployan::LetterDh => "duployan letter dh",
Duployan::LetterKk => "duployan letter kk",
Duployan::LetterSloanJ => "duployan letter sloan j",
Duployan::LetterHl => "duployan letter hl",
Duployan::LetterLh => "duployan letter lh",
Duployan::LetterRh => "duployan letter rh",
Duployan::LetterM => "duployan letter m",
Duployan::LetterN => "duployan letter n",
Duployan::LetterJ => "duployan letter j",
Duployan::LetterS => "duployan letter s",
Duployan::LetterMN => "duployan letter m n",
Duployan::LetterNM => "duployan letter n m",
Duployan::LetterJM => "duployan letter j m",
Duployan::LetterSJ => "duployan letter s j",
Duployan::LetterMWithDot => "duployan letter m with dot",
Duployan::LetterNWithDot => "duployan letter n with dot",
Duployan::LetterJWithDot => "duployan letter j with dot",
Duployan::LetterJWithDotsInsideAndAbove => "duployan letter j with dots inside and above",
Duployan::LetterSWithDot => "duployan letter s with dot",
Duployan::LetterSWithDotBelow => "duployan letter s with dot below",
Duployan::LetterMS => "duployan letter m s",
Duployan::LetterNS => "duployan letter n s",
Duployan::LetterJS => "duployan letter j s",
Duployan::LetterSS => "duployan letter s s",
Duployan::LetterMNS => "duployan letter m n s",
Duployan::LetterNMS => "duployan letter n m s",
Duployan::LetterJMS => "duployan letter j m s",
Duployan::LetterSJS => "duployan letter s j s",
Duployan::LetterJSWithDot => "duployan letter j s with dot",
Duployan::LetterJN => "duployan letter j n",
Duployan::LetterJNS => "duployan letter j n s",
Duployan::LetterST => "duployan letter s t",
Duployan::LetterSTR => "duployan letter s t r",
Duployan::LetterSP => "duployan letter s p",
Duployan::LetterSPR => "duployan letter s p r",
Duployan::LetterTS => "duployan letter t s",
Duployan::LetterTRS => "duployan letter t r s",
Duployan::LetterW => "duployan letter w",
Duployan::LetterWh => "duployan letter wh",
Duployan::LetterWR => "duployan letter w r",
Duployan::LetterSN => "duployan letter s n",
Duployan::LetterSM => "duployan letter s m",
Duployan::LetterKRS => "duployan letter k r s",
Duployan::LetterGRS => "duployan letter g r s",
Duployan::LetterSK => "duployan letter s k",
Duployan::LetterSKR => "duployan letter s k r",
Duployan::LetterA => "duployan letter a",
Duployan::LetterSloanOw => "duployan letter sloan ow",
Duployan::LetterOa => "duployan letter oa",
Duployan::LetterO => "duployan letter o",
Duployan::LetterAou => "duployan letter aou",
Duployan::LetterI => "duployan letter i",
Duployan::LetterE => "duployan letter e",
Duployan::LetterIe => "duployan letter ie",
Duployan::LetterShortI => "duployan letter short i",
Duployan::LetterUi => "duployan letter ui",
Duployan::LetterEe => "duployan letter ee",
Duployan::LetterSloanEh => "duployan letter sloan eh",
Duployan::LetterRomanianI => "duployan letter romanian i",
Duployan::LetterSloanEe => "duployan letter sloan ee",
Duployan::LetterLongI => "duployan letter long i",
Duployan::LetterYe => "duployan letter ye",
Duployan::LetterU => "duployan letter u",
Duployan::LetterEu => "duployan letter eu",
Duployan::LetterXw => "duployan letter xw",
Duployan::LetterUN => "duployan letter u n",
Duployan::LetterLongU => "duployan letter long u",
Duployan::LetterRomanianU => "duployan letter romanian u",
Duployan::LetterUh => "duployan letter uh",
Duployan::LetterSloanU => "duployan letter sloan u",
Duployan::LetterOoh => "duployan letter ooh",
Duployan::LetterOw => "duployan letter ow",
Duployan::LetterOu => "duployan letter ou",
Duployan::LetterWa => "duployan letter wa",
Duployan::LetterWo => "duployan letter wo",
Duployan::LetterWi => "duployan letter wi",
Duployan::LetterWei => "duployan letter wei",
Duployan::LetterWow => "duployan letter wow",
Duployan::LetterNasalU => "duployan letter nasal u",
Duployan::LetterNasalO => "duployan letter nasal o",
Duployan::LetterNasalI => "duployan letter nasal i",
Duployan::LetterNasalA => "duployan letter nasal a",
Duployan::LetterPerninAn => "duployan letter pernin an",
Duployan::LetterPerninAm => "duployan letter pernin am",
Duployan::LetterSloanEn => "duployan letter sloan en",
Duployan::LetterSloanAn => "duployan letter sloan an",
Duployan::LetterSloanOn => "duployan letter sloan on",
Duployan::LetterVocalicM => "duployan letter vocalic m",
Duployan::AffixLeftHorizontalSecant => "duployan affix left horizontal secant",
Duployan::AffixMidHorizontalSecant => "duployan affix mid horizontal secant",
Duployan::AffixRightHorizontalSecant => "duployan affix right horizontal secant",
Duployan::AffixLowVerticalSecant => "duployan affix low vertical secant",
Duployan::AffixMidVerticalSecant => "duployan affix mid vertical secant",
Duployan::AffixHighVerticalSecant => "duployan affix high vertical secant",
Duployan::AffixAttachedSecant => "duployan affix attached secant",
Duployan::AffixAttachedLeftDashToDashRightSecant => "duployan affix attached left-to-right secant",
Duployan::AffixAttachedTangent => "duployan affix attached tangent",
Duployan::AffixAttachedTail => "duployan affix attached tail",
Duployan::AffixAttachedEHook => "duployan affix attached e hook",
Duployan::AffixAttachedIHook => "duployan affix attached i hook",
Duployan::AffixAttachedTangentHook => "duployan affix attached tangent hook",
Duployan::AffixHighAcute => "duployan affix high acute",
Duployan::AffixHighTightAcute => "duployan affix high tight acute",
Duployan::AffixHighGrave => "duployan affix high grave",
Duployan::AffixHighLongGrave => "duployan affix high long grave",
Duployan::AffixHighDot => "duployan affix high dot",
Duployan::AffixHighCircle => "duployan affix high circle",
Duployan::AffixHighLine => "duployan affix high line",
Duployan::AffixHighWave => "duployan affix high wave",
Duployan::AffixHighVertical => "duployan affix high vertical",
Duployan::AffixLowAcute => "duployan affix low acute",
Duployan::AffixLowTightAcute => "duployan affix low tight acute",
Duployan::AffixLowGrave => "duployan affix low grave",
Duployan::AffixLowLongGrave => "duployan affix low long grave",
Duployan::AffixLowDot => "duployan affix low dot",
Duployan::AffixLowCircle => "duployan affix low circle",
Duployan::AffixLowLine => "duployan affix low line",
Duployan::AffixLowWave => "duployan affix low wave",
Duployan::AffixLowVertical => "duployan affix low vertical",
Duployan::AffixLowArrow => "duployan affix low arrow",
Duployan::SignOWithCross => "duployan sign o with cross",
Duployan::ThickLetterSelector => "duployan thick letter selector",
Duployan::DoubleMark => "duployan double mark",
}
}
}