unicode_types/generated/
combining_half_marks.rs1
2#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum CombiningHalfMarks {
5 CombiningLigatureLeftHalf,
7 CombiningLigatureRightHalf,
9 CombiningDoubleTildeLeftHalf,
11 CombiningDoubleTildeRightHalf,
13 CombiningMacronLeftHalf,
15 CombiningMacronRightHalf,
17 CombiningConjoiningMacron,
19 CombiningLigatureLeftHalfBelow,
21 CombiningLigatureRightHalfBelow,
23 CombiningTildeLeftHalfBelow,
25 CombiningTildeRightHalfBelow,
27 CombiningMacronLeftHalfBelow,
29 CombiningMacronRightHalfBelow,
31 CombiningConjoiningMacronBelow,
33 CombiningCyrillicTitloLeftHalf,
35}
36
37impl Into<char> for CombiningHalfMarks {
38 fn into(self) -> char {
39 match self {
40 CombiningHalfMarks::CombiningLigatureLeftHalf => '︠',
41 CombiningHalfMarks::CombiningLigatureRightHalf => '︡',
42 CombiningHalfMarks::CombiningDoubleTildeLeftHalf => '︢',
43 CombiningHalfMarks::CombiningDoubleTildeRightHalf => '︣',
44 CombiningHalfMarks::CombiningMacronLeftHalf => '︤',
45 CombiningHalfMarks::CombiningMacronRightHalf => '︥',
46 CombiningHalfMarks::CombiningConjoiningMacron => '︦',
47 CombiningHalfMarks::CombiningLigatureLeftHalfBelow => '︧',
48 CombiningHalfMarks::CombiningLigatureRightHalfBelow => '︨',
49 CombiningHalfMarks::CombiningTildeLeftHalfBelow => '︩',
50 CombiningHalfMarks::CombiningTildeRightHalfBelow => '︪',
51 CombiningHalfMarks::CombiningMacronLeftHalfBelow => '︫',
52 CombiningHalfMarks::CombiningMacronRightHalfBelow => '︬',
53 CombiningHalfMarks::CombiningConjoiningMacronBelow => '︭',
54 CombiningHalfMarks::CombiningCyrillicTitloLeftHalf => '︮',
55 }
56 }
57}
58
59impl std::convert::TryFrom<char> for CombiningHalfMarks {
60 type Error = ();
61 fn try_from(c: char) -> Result<Self, Self::Error> {
62 match c {
63 '︠' => Ok(CombiningHalfMarks::CombiningLigatureLeftHalf),
64 '︡' => Ok(CombiningHalfMarks::CombiningLigatureRightHalf),
65 '︢' => Ok(CombiningHalfMarks::CombiningDoubleTildeLeftHalf),
66 '︣' => Ok(CombiningHalfMarks::CombiningDoubleTildeRightHalf),
67 '︤' => Ok(CombiningHalfMarks::CombiningMacronLeftHalf),
68 '︥' => Ok(CombiningHalfMarks::CombiningMacronRightHalf),
69 '︦' => Ok(CombiningHalfMarks::CombiningConjoiningMacron),
70 '︧' => Ok(CombiningHalfMarks::CombiningLigatureLeftHalfBelow),
71 '︨' => Ok(CombiningHalfMarks::CombiningLigatureRightHalfBelow),
72 '︩' => Ok(CombiningHalfMarks::CombiningTildeLeftHalfBelow),
73 '︪' => Ok(CombiningHalfMarks::CombiningTildeRightHalfBelow),
74 '︫' => Ok(CombiningHalfMarks::CombiningMacronLeftHalfBelow),
75 '︬' => Ok(CombiningHalfMarks::CombiningMacronRightHalfBelow),
76 '︭' => Ok(CombiningHalfMarks::CombiningConjoiningMacronBelow),
77 '︮' => Ok(CombiningHalfMarks::CombiningCyrillicTitloLeftHalf),
78 _ => Err(()),
79 }
80 }
81}
82
83impl Into<u32> for CombiningHalfMarks {
84 fn into(self) -> u32 {
85 let c: char = self.into();
86 let hex = c
87 .escape_unicode()
88 .to_string()
89 .replace("\\u{", "")
90 .replace("}", "");
91 u32::from_str_radix(&hex, 16).unwrap()
92 }
93}
94
95impl std::convert::TryFrom<u32> for CombiningHalfMarks {
96 type Error = ();
97 fn try_from(u: u32) -> Result<Self, Self::Error> {
98 if let Ok(c) = char::try_from(u) {
99 Self::try_from(c)
100 } else {
101 Err(())
102 }
103 }
104}
105
106impl Iterator for CombiningHalfMarks {
107 type Item = Self;
108 fn next(&mut self) -> Option<Self> {
109 let index: u32 = (*self).into();
110 use std::convert::TryFrom;
111 Self::try_from(index + 1).ok()
112 }
113}
114
115impl CombiningHalfMarks {
116 pub fn new() -> Self {
118 CombiningHalfMarks::CombiningLigatureLeftHalf
119 }
120
121 pub fn name(&self) -> String {
123 let s = std::format!("CombiningHalfMarks{:#?}", self);
124 string_morph::to_sentence_case(&s)
125 }
126}