#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum CombiningDiacriticalMarks {
CombiningGraveAccent,
CombiningAcuteAccent,
CombiningCircumflexAccent,
CombiningTilde,
CombiningMacron,
CombiningOverline,
CombiningBreve,
CombiningDotAbove,
CombiningDiaeresis,
CombiningHookAbove,
CombiningRingAbove,
CombiningDoubleAcuteAccent,
CombiningCaron,
CombiningVerticalLineAbove,
CombiningDoubleVerticalLineAbove,
CombiningDoubleGraveAccent,
CombiningCandrabindu,
CombiningInvertedBreve,
CombiningTurnedCommaAbove,
CombiningCommaAbove,
CombiningReversedCommaAbove,
CombiningCommaAboveRight,
CombiningGraveAccentBelow,
CombiningAcuteAccentBelow,
CombiningLeftTackBelow,
CombiningRightTackBelow,
CombiningLeftAngleAbove,
CombiningHorn,
CombiningLeftHalfRingBelow,
CombiningUpTackBelow,
CombiningDownTackBelow,
CombiningPlusSignBelow,
CombiningMinusSignBelow,
CombiningPalatalizedHookBelow,
CombiningRetroflexHookBelow,
CombiningDotBelow,
CombiningDiaeresisBelow,
CombiningRingBelow,
CombiningCommaBelow,
CombiningCedilla,
CombiningOgonek,
CombiningVerticalLineBelow,
CombiningBridgeBelow,
CombiningInvertedDoubleArchBelow,
CombiningCaronBelow,
CombiningCircumflexAccentBelow,
CombiningBreveBelow,
CombiningInvertedBreveBelow,
CombiningTildeBelow,
CombiningMacronBelow,
CombiningLowLine,
CombiningDoubleLowLine,
CombiningTildeOverlay,
CombiningShortStrokeOverlay,
CombiningLongStrokeOverlay,
CombiningShortSolidusOverlay,
CombiningLongSolidusOverlay,
CombiningRightHalfRingBelow,
CombiningInvertedBridgeBelow,
CombiningSquareBelow,
CombiningSeagullBelow,
CombiningXAbove,
CombiningVerticalTilde,
CombiningDoubleOverline,
CombiningGraveToneMark,
CombiningAcuteToneMark,
CombiningGreekPerispomeni,
CombiningGreekKoronis,
CombiningGreekDialytikaTonos,
CombiningGreekYpogegrammeni,
CombiningBridgeAbove,
CombiningEqualsSignBelow,
CombiningDoubleVerticalLineBelow,
CombiningLeftAngleBelow,
CombiningNotTildeAbove,
CombiningHomotheticAbove,
CombiningAlmostEqualToAbove,
CombiningLeftRightArrowBelow,
CombiningUpwardsArrowBelow,
CombiningGraphemeJoiner,
CombiningRightArrowheadAbove,
CombiningLeftHalfRingAbove,
CombiningFermata,
CombiningXBelow,
CombiningLeftArrowheadBelow,
CombiningRightArrowheadBelow,
CombiningRightArrowheadAndUpArrowheadBelow,
CombiningRightHalfRingAbove,
CombiningDotAboveRight,
CombiningAsteriskBelow,
CombiningDoubleRingBelow,
CombiningZigzagAbove,
CombiningDoubleBreveBelow,
CombiningDoubleBreve,
CombiningDoubleMacron,
CombiningDoubleMacronBelow,
CombiningDoubleTilde,
CombiningDoubleInvertedBreve,
CombiningDoubleRightwardsArrowBelow,
CombiningLatinSmallLetterA,
CombiningLatinSmallLetterE,
CombiningLatinSmallLetterI,
CombiningLatinSmallLetterO,
CombiningLatinSmallLetterU,
CombiningLatinSmallLetterC,
CombiningLatinSmallLetterD,
CombiningLatinSmallLetterH,
CombiningLatinSmallLetterM,
CombiningLatinSmallLetterR,
CombiningLatinSmallLetterT,
CombiningLatinSmallLetterV,
}
impl Into<char> for CombiningDiacriticalMarks {
fn into(self) -> char {
match self {
CombiningDiacriticalMarks::CombiningGraveAccent => '̀',
CombiningDiacriticalMarks::CombiningAcuteAccent => '́',
CombiningDiacriticalMarks::CombiningCircumflexAccent => '̂',
CombiningDiacriticalMarks::CombiningTilde => '̃',
CombiningDiacriticalMarks::CombiningMacron => '̄',
CombiningDiacriticalMarks::CombiningOverline => '̅',
CombiningDiacriticalMarks::CombiningBreve => '̆',
CombiningDiacriticalMarks::CombiningDotAbove => '̇',
CombiningDiacriticalMarks::CombiningDiaeresis => '̈',
CombiningDiacriticalMarks::CombiningHookAbove => '̉',
CombiningDiacriticalMarks::CombiningRingAbove => '̊',
CombiningDiacriticalMarks::CombiningDoubleAcuteAccent => '̋',
CombiningDiacriticalMarks::CombiningCaron => '̌',
CombiningDiacriticalMarks::CombiningVerticalLineAbove => '̍',
CombiningDiacriticalMarks::CombiningDoubleVerticalLineAbove => '̎',
CombiningDiacriticalMarks::CombiningDoubleGraveAccent => '̏',
CombiningDiacriticalMarks::CombiningCandrabindu => '̐',
CombiningDiacriticalMarks::CombiningInvertedBreve => '̑',
CombiningDiacriticalMarks::CombiningTurnedCommaAbove => '̒',
CombiningDiacriticalMarks::CombiningCommaAbove => '̓',
CombiningDiacriticalMarks::CombiningReversedCommaAbove => '̔',
CombiningDiacriticalMarks::CombiningCommaAboveRight => '̕',
CombiningDiacriticalMarks::CombiningGraveAccentBelow => '̖',
CombiningDiacriticalMarks::CombiningAcuteAccentBelow => '̗',
CombiningDiacriticalMarks::CombiningLeftTackBelow => '̘',
CombiningDiacriticalMarks::CombiningRightTackBelow => '̙',
CombiningDiacriticalMarks::CombiningLeftAngleAbove => '̚',
CombiningDiacriticalMarks::CombiningHorn => '̛',
CombiningDiacriticalMarks::CombiningLeftHalfRingBelow => '̜',
CombiningDiacriticalMarks::CombiningUpTackBelow => '̝',
CombiningDiacriticalMarks::CombiningDownTackBelow => '̞',
CombiningDiacriticalMarks::CombiningPlusSignBelow => '̟',
CombiningDiacriticalMarks::CombiningMinusSignBelow => '̠',
CombiningDiacriticalMarks::CombiningPalatalizedHookBelow => '̡',
CombiningDiacriticalMarks::CombiningRetroflexHookBelow => '̢',
CombiningDiacriticalMarks::CombiningDotBelow => '̣',
CombiningDiacriticalMarks::CombiningDiaeresisBelow => '̤',
CombiningDiacriticalMarks::CombiningRingBelow => '̥',
CombiningDiacriticalMarks::CombiningCommaBelow => '̦',
CombiningDiacriticalMarks::CombiningCedilla => '̧',
CombiningDiacriticalMarks::CombiningOgonek => '̨',
CombiningDiacriticalMarks::CombiningVerticalLineBelow => '̩',
CombiningDiacriticalMarks::CombiningBridgeBelow => '̪',
CombiningDiacriticalMarks::CombiningInvertedDoubleArchBelow => '̫',
CombiningDiacriticalMarks::CombiningCaronBelow => '̬',
CombiningDiacriticalMarks::CombiningCircumflexAccentBelow => '̭',
CombiningDiacriticalMarks::CombiningBreveBelow => '̮',
CombiningDiacriticalMarks::CombiningInvertedBreveBelow => '̯',
CombiningDiacriticalMarks::CombiningTildeBelow => '̰',
CombiningDiacriticalMarks::CombiningMacronBelow => '̱',
CombiningDiacriticalMarks::CombiningLowLine => '̲',
CombiningDiacriticalMarks::CombiningDoubleLowLine => '̳',
CombiningDiacriticalMarks::CombiningTildeOverlay => '̴',
CombiningDiacriticalMarks::CombiningShortStrokeOverlay => '̵',
CombiningDiacriticalMarks::CombiningLongStrokeOverlay => '̶',
CombiningDiacriticalMarks::CombiningShortSolidusOverlay => '̷',
CombiningDiacriticalMarks::CombiningLongSolidusOverlay => '̸',
CombiningDiacriticalMarks::CombiningRightHalfRingBelow => '̹',
CombiningDiacriticalMarks::CombiningInvertedBridgeBelow => '̺',
CombiningDiacriticalMarks::CombiningSquareBelow => '̻',
CombiningDiacriticalMarks::CombiningSeagullBelow => '̼',
CombiningDiacriticalMarks::CombiningXAbove => '̽',
CombiningDiacriticalMarks::CombiningVerticalTilde => '̾',
CombiningDiacriticalMarks::CombiningDoubleOverline => '̿',
CombiningDiacriticalMarks::CombiningGraveToneMark => '̀',
CombiningDiacriticalMarks::CombiningAcuteToneMark => '́',
CombiningDiacriticalMarks::CombiningGreekPerispomeni => '͂',
CombiningDiacriticalMarks::CombiningGreekKoronis => '̓',
CombiningDiacriticalMarks::CombiningGreekDialytikaTonos => '̈́',
CombiningDiacriticalMarks::CombiningGreekYpogegrammeni => 'ͅ',
CombiningDiacriticalMarks::CombiningBridgeAbove => '͆',
CombiningDiacriticalMarks::CombiningEqualsSignBelow => '͇',
CombiningDiacriticalMarks::CombiningDoubleVerticalLineBelow => '͈',
CombiningDiacriticalMarks::CombiningLeftAngleBelow => '͉',
CombiningDiacriticalMarks::CombiningNotTildeAbove => '͊',
CombiningDiacriticalMarks::CombiningHomotheticAbove => '͋',
CombiningDiacriticalMarks::CombiningAlmostEqualToAbove => '͌',
CombiningDiacriticalMarks::CombiningLeftRightArrowBelow => '͍',
CombiningDiacriticalMarks::CombiningUpwardsArrowBelow => '͎',
CombiningDiacriticalMarks::CombiningGraphemeJoiner => '͏',
CombiningDiacriticalMarks::CombiningRightArrowheadAbove => '͐',
CombiningDiacriticalMarks::CombiningLeftHalfRingAbove => '͑',
CombiningDiacriticalMarks::CombiningFermata => '͒',
CombiningDiacriticalMarks::CombiningXBelow => '͓',
CombiningDiacriticalMarks::CombiningLeftArrowheadBelow => '͔',
CombiningDiacriticalMarks::CombiningRightArrowheadBelow => '͕',
CombiningDiacriticalMarks::CombiningRightArrowheadAndUpArrowheadBelow => '͖',
CombiningDiacriticalMarks::CombiningRightHalfRingAbove => '͗',
CombiningDiacriticalMarks::CombiningDotAboveRight => '͘',
CombiningDiacriticalMarks::CombiningAsteriskBelow => '͙',
CombiningDiacriticalMarks::CombiningDoubleRingBelow => '͚',
CombiningDiacriticalMarks::CombiningZigzagAbove => '͛',
CombiningDiacriticalMarks::CombiningDoubleBreveBelow => '͜',
CombiningDiacriticalMarks::CombiningDoubleBreve => '͝',
CombiningDiacriticalMarks::CombiningDoubleMacron => '͞',
CombiningDiacriticalMarks::CombiningDoubleMacronBelow => '͟',
CombiningDiacriticalMarks::CombiningDoubleTilde => '͠',
CombiningDiacriticalMarks::CombiningDoubleInvertedBreve => '͡',
CombiningDiacriticalMarks::CombiningDoubleRightwardsArrowBelow => '͢',
CombiningDiacriticalMarks::CombiningLatinSmallLetterA => 'ͣ',
CombiningDiacriticalMarks::CombiningLatinSmallLetterE => 'ͤ',
CombiningDiacriticalMarks::CombiningLatinSmallLetterI => 'ͥ',
CombiningDiacriticalMarks::CombiningLatinSmallLetterO => 'ͦ',
CombiningDiacriticalMarks::CombiningLatinSmallLetterU => 'ͧ',
CombiningDiacriticalMarks::CombiningLatinSmallLetterC => 'ͨ',
CombiningDiacriticalMarks::CombiningLatinSmallLetterD => 'ͩ',
CombiningDiacriticalMarks::CombiningLatinSmallLetterH => 'ͪ',
CombiningDiacriticalMarks::CombiningLatinSmallLetterM => 'ͫ',
CombiningDiacriticalMarks::CombiningLatinSmallLetterR => 'ͬ',
CombiningDiacriticalMarks::CombiningLatinSmallLetterT => 'ͭ',
CombiningDiacriticalMarks::CombiningLatinSmallLetterV => 'ͮ',
}
}
}
impl std::convert::TryFrom<char> for CombiningDiacriticalMarks {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'̀' => Ok(CombiningDiacriticalMarks::CombiningGraveAccent),
'́' => Ok(CombiningDiacriticalMarks::CombiningAcuteAccent),
'̂' => Ok(CombiningDiacriticalMarks::CombiningCircumflexAccent),
'̃' => Ok(CombiningDiacriticalMarks::CombiningTilde),
'̄' => Ok(CombiningDiacriticalMarks::CombiningMacron),
'̅' => Ok(CombiningDiacriticalMarks::CombiningOverline),
'̆' => Ok(CombiningDiacriticalMarks::CombiningBreve),
'̇' => Ok(CombiningDiacriticalMarks::CombiningDotAbove),
'̈' => Ok(CombiningDiacriticalMarks::CombiningDiaeresis),
'̉' => Ok(CombiningDiacriticalMarks::CombiningHookAbove),
'̊' => Ok(CombiningDiacriticalMarks::CombiningRingAbove),
'̋' => Ok(CombiningDiacriticalMarks::CombiningDoubleAcuteAccent),
'̌' => Ok(CombiningDiacriticalMarks::CombiningCaron),
'̍' => Ok(CombiningDiacriticalMarks::CombiningVerticalLineAbove),
'̎' => Ok(CombiningDiacriticalMarks::CombiningDoubleVerticalLineAbove),
'̏' => Ok(CombiningDiacriticalMarks::CombiningDoubleGraveAccent),
'̐' => Ok(CombiningDiacriticalMarks::CombiningCandrabindu),
'̑' => Ok(CombiningDiacriticalMarks::CombiningInvertedBreve),
'̒' => Ok(CombiningDiacriticalMarks::CombiningTurnedCommaAbove),
'̓' => Ok(CombiningDiacriticalMarks::CombiningCommaAbove),
'̔' => Ok(CombiningDiacriticalMarks::CombiningReversedCommaAbove),
'̕' => Ok(CombiningDiacriticalMarks::CombiningCommaAboveRight),
'̖' => Ok(CombiningDiacriticalMarks::CombiningGraveAccentBelow),
'̗' => Ok(CombiningDiacriticalMarks::CombiningAcuteAccentBelow),
'̘' => Ok(CombiningDiacriticalMarks::CombiningLeftTackBelow),
'̙' => Ok(CombiningDiacriticalMarks::CombiningRightTackBelow),
'̚' => Ok(CombiningDiacriticalMarks::CombiningLeftAngleAbove),
'̛' => Ok(CombiningDiacriticalMarks::CombiningHorn),
'̜' => Ok(CombiningDiacriticalMarks::CombiningLeftHalfRingBelow),
'̝' => Ok(CombiningDiacriticalMarks::CombiningUpTackBelow),
'̞' => Ok(CombiningDiacriticalMarks::CombiningDownTackBelow),
'̟' => Ok(CombiningDiacriticalMarks::CombiningPlusSignBelow),
'̠' => Ok(CombiningDiacriticalMarks::CombiningMinusSignBelow),
'̡' => Ok(CombiningDiacriticalMarks::CombiningPalatalizedHookBelow),
'̢' => Ok(CombiningDiacriticalMarks::CombiningRetroflexHookBelow),
'̣' => Ok(CombiningDiacriticalMarks::CombiningDotBelow),
'̤' => Ok(CombiningDiacriticalMarks::CombiningDiaeresisBelow),
'̥' => Ok(CombiningDiacriticalMarks::CombiningRingBelow),
'̦' => Ok(CombiningDiacriticalMarks::CombiningCommaBelow),
'̧' => Ok(CombiningDiacriticalMarks::CombiningCedilla),
'̨' => Ok(CombiningDiacriticalMarks::CombiningOgonek),
'̩' => Ok(CombiningDiacriticalMarks::CombiningVerticalLineBelow),
'̪' => Ok(CombiningDiacriticalMarks::CombiningBridgeBelow),
'̫' => Ok(CombiningDiacriticalMarks::CombiningInvertedDoubleArchBelow),
'̬' => Ok(CombiningDiacriticalMarks::CombiningCaronBelow),
'̭' => Ok(CombiningDiacriticalMarks::CombiningCircumflexAccentBelow),
'̮' => Ok(CombiningDiacriticalMarks::CombiningBreveBelow),
'̯' => Ok(CombiningDiacriticalMarks::CombiningInvertedBreveBelow),
'̰' => Ok(CombiningDiacriticalMarks::CombiningTildeBelow),
'̱' => Ok(CombiningDiacriticalMarks::CombiningMacronBelow),
'̲' => Ok(CombiningDiacriticalMarks::CombiningLowLine),
'̳' => Ok(CombiningDiacriticalMarks::CombiningDoubleLowLine),
'̴' => Ok(CombiningDiacriticalMarks::CombiningTildeOverlay),
'̵' => Ok(CombiningDiacriticalMarks::CombiningShortStrokeOverlay),
'̶' => Ok(CombiningDiacriticalMarks::CombiningLongStrokeOverlay),
'̷' => Ok(CombiningDiacriticalMarks::CombiningShortSolidusOverlay),
'̸' => Ok(CombiningDiacriticalMarks::CombiningLongSolidusOverlay),
'̹' => Ok(CombiningDiacriticalMarks::CombiningRightHalfRingBelow),
'̺' => Ok(CombiningDiacriticalMarks::CombiningInvertedBridgeBelow),
'̻' => Ok(CombiningDiacriticalMarks::CombiningSquareBelow),
'̼' => Ok(CombiningDiacriticalMarks::CombiningSeagullBelow),
'̽' => Ok(CombiningDiacriticalMarks::CombiningXAbove),
'̾' => Ok(CombiningDiacriticalMarks::CombiningVerticalTilde),
'̿' => Ok(CombiningDiacriticalMarks::CombiningDoubleOverline),
'̀' => Ok(CombiningDiacriticalMarks::CombiningGraveToneMark),
'́' => Ok(CombiningDiacriticalMarks::CombiningAcuteToneMark),
'͂' => Ok(CombiningDiacriticalMarks::CombiningGreekPerispomeni),
'̓' => Ok(CombiningDiacriticalMarks::CombiningGreekKoronis),
'̈́' => Ok(CombiningDiacriticalMarks::CombiningGreekDialytikaTonos),
'ͅ' => Ok(CombiningDiacriticalMarks::CombiningGreekYpogegrammeni),
'͆' => Ok(CombiningDiacriticalMarks::CombiningBridgeAbove),
'͇' => Ok(CombiningDiacriticalMarks::CombiningEqualsSignBelow),
'͈' => Ok(CombiningDiacriticalMarks::CombiningDoubleVerticalLineBelow),
'͉' => Ok(CombiningDiacriticalMarks::CombiningLeftAngleBelow),
'͊' => Ok(CombiningDiacriticalMarks::CombiningNotTildeAbove),
'͋' => Ok(CombiningDiacriticalMarks::CombiningHomotheticAbove),
'͌' => Ok(CombiningDiacriticalMarks::CombiningAlmostEqualToAbove),
'͍' => Ok(CombiningDiacriticalMarks::CombiningLeftRightArrowBelow),
'͎' => Ok(CombiningDiacriticalMarks::CombiningUpwardsArrowBelow),
'͏' => Ok(CombiningDiacriticalMarks::CombiningGraphemeJoiner),
'͐' => Ok(CombiningDiacriticalMarks::CombiningRightArrowheadAbove),
'͑' => Ok(CombiningDiacriticalMarks::CombiningLeftHalfRingAbove),
'͒' => Ok(CombiningDiacriticalMarks::CombiningFermata),
'͓' => Ok(CombiningDiacriticalMarks::CombiningXBelow),
'͔' => Ok(CombiningDiacriticalMarks::CombiningLeftArrowheadBelow),
'͕' => Ok(CombiningDiacriticalMarks::CombiningRightArrowheadBelow),
'͖' => Ok(CombiningDiacriticalMarks::CombiningRightArrowheadAndUpArrowheadBelow),
'͗' => Ok(CombiningDiacriticalMarks::CombiningRightHalfRingAbove),
'͘' => Ok(CombiningDiacriticalMarks::CombiningDotAboveRight),
'͙' => Ok(CombiningDiacriticalMarks::CombiningAsteriskBelow),
'͚' => Ok(CombiningDiacriticalMarks::CombiningDoubleRingBelow),
'͛' => Ok(CombiningDiacriticalMarks::CombiningZigzagAbove),
'͜' => Ok(CombiningDiacriticalMarks::CombiningDoubleBreveBelow),
'͝' => Ok(CombiningDiacriticalMarks::CombiningDoubleBreve),
'͞' => Ok(CombiningDiacriticalMarks::CombiningDoubleMacron),
'͟' => Ok(CombiningDiacriticalMarks::CombiningDoubleMacronBelow),
'͠' => Ok(CombiningDiacriticalMarks::CombiningDoubleTilde),
'͡' => Ok(CombiningDiacriticalMarks::CombiningDoubleInvertedBreve),
'͢' => Ok(CombiningDiacriticalMarks::CombiningDoubleRightwardsArrowBelow),
'ͣ' => Ok(CombiningDiacriticalMarks::CombiningLatinSmallLetterA),
'ͤ' => Ok(CombiningDiacriticalMarks::CombiningLatinSmallLetterE),
'ͥ' => Ok(CombiningDiacriticalMarks::CombiningLatinSmallLetterI),
'ͦ' => Ok(CombiningDiacriticalMarks::CombiningLatinSmallLetterO),
'ͧ' => Ok(CombiningDiacriticalMarks::CombiningLatinSmallLetterU),
'ͨ' => Ok(CombiningDiacriticalMarks::CombiningLatinSmallLetterC),
'ͩ' => Ok(CombiningDiacriticalMarks::CombiningLatinSmallLetterD),
'ͪ' => Ok(CombiningDiacriticalMarks::CombiningLatinSmallLetterH),
'ͫ' => Ok(CombiningDiacriticalMarks::CombiningLatinSmallLetterM),
'ͬ' => Ok(CombiningDiacriticalMarks::CombiningLatinSmallLetterR),
'ͭ' => Ok(CombiningDiacriticalMarks::CombiningLatinSmallLetterT),
'ͮ' => Ok(CombiningDiacriticalMarks::CombiningLatinSmallLetterV),
_ => Err(()),
}
}
}
impl Into<u32> for CombiningDiacriticalMarks {
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 CombiningDiacriticalMarks {
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 CombiningDiacriticalMarks {
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 CombiningDiacriticalMarks {
pub fn new() -> Self {
CombiningDiacriticalMarks::CombiningGraveAccent
}
pub fn name(&self) -> String {
let s = std::format!("CombiningDiacriticalMarks{:#?}", self);
string_morph::to_sentence_case(&s)
}
}