1
2#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum YiRadicals {
5 YiRadicalQot,
7 YiRadicalLi,
9 YiRadicalKit,
11 YiRadicalNyip,
13 YiRadicalCyp,
15 YiRadicalSsi,
17 YiRadicalGgop,
19 YiRadicalGep,
21 YiRadicalMi,
23 YiRadicalHxit,
25 YiRadicalLyr,
27 YiRadicalBbut,
29 YiRadicalMop,
31 YiRadicalYo,
33 YiRadicalPut,
35 YiRadicalHxuo,
37 YiRadicalTat,
39 YiRadicalGa,
41 YiRadicalZup,
43 YiRadicalCyt,
45 YiRadicalDdur,
47 YiRadicalBur,
49 YiRadicalGguo,
51 YiRadicalNyop,
53 YiRadicalTu,
55 YiRadicalOp,
57 YiRadicalJjut,
59 YiRadicalZot,
61 YiRadicalPyt,
63 YiRadicalHmo,
65 YiRadicalYit,
67 YiRadicalVur,
69 YiRadicalShy,
71 YiRadicalVep,
73 YiRadicalZa,
75 YiRadicalJo,
77 YiRadicalNzup,
79 YiRadicalJjy,
81 YiRadicalGot,
83 YiRadicalJjie,
85 YiRadicalWo,
87 YiRadicalDu,
89 YiRadicalShur,
91 YiRadicalLie,
93 YiRadicalCy,
95 YiRadicalCuop,
97 YiRadicalCip,
99 YiRadicalHxop,
101 YiRadicalShat,
103 YiRadicalZur,
105 YiRadicalShop,
107 YiRadicalChe,
109 YiRadicalZziet,
111 YiRadicalNbie,
113 YiRadicalKe,
115}
116
117impl Into<char> for YiRadicals {
118 fn into(self) -> char {
119 match self {
120 YiRadicals::YiRadicalQot => '꒐',
121 YiRadicals::YiRadicalLi => '꒑',
122 YiRadicals::YiRadicalKit => '꒒',
123 YiRadicals::YiRadicalNyip => '꒓',
124 YiRadicals::YiRadicalCyp => '꒔',
125 YiRadicals::YiRadicalSsi => '꒕',
126 YiRadicals::YiRadicalGgop => '꒖',
127 YiRadicals::YiRadicalGep => '꒗',
128 YiRadicals::YiRadicalMi => '꒘',
129 YiRadicals::YiRadicalHxit => '꒙',
130 YiRadicals::YiRadicalLyr => '꒚',
131 YiRadicals::YiRadicalBbut => '꒛',
132 YiRadicals::YiRadicalMop => '꒜',
133 YiRadicals::YiRadicalYo => '꒝',
134 YiRadicals::YiRadicalPut => '꒞',
135 YiRadicals::YiRadicalHxuo => '꒟',
136 YiRadicals::YiRadicalTat => '꒠',
137 YiRadicals::YiRadicalGa => '꒡',
138 YiRadicals::YiRadicalZup => '꒢',
139 YiRadicals::YiRadicalCyt => '꒣',
140 YiRadicals::YiRadicalDdur => '꒤',
141 YiRadicals::YiRadicalBur => '꒥',
142 YiRadicals::YiRadicalGguo => '꒦',
143 YiRadicals::YiRadicalNyop => '꒧',
144 YiRadicals::YiRadicalTu => '꒨',
145 YiRadicals::YiRadicalOp => '꒩',
146 YiRadicals::YiRadicalJjut => '꒪',
147 YiRadicals::YiRadicalZot => '꒫',
148 YiRadicals::YiRadicalPyt => '꒬',
149 YiRadicals::YiRadicalHmo => '꒭',
150 YiRadicals::YiRadicalYit => '꒮',
151 YiRadicals::YiRadicalVur => '꒯',
152 YiRadicals::YiRadicalShy => '꒰',
153 YiRadicals::YiRadicalVep => '꒱',
154 YiRadicals::YiRadicalZa => '꒲',
155 YiRadicals::YiRadicalJo => '꒳',
156 YiRadicals::YiRadicalNzup => '꒴',
157 YiRadicals::YiRadicalJjy => '꒵',
158 YiRadicals::YiRadicalGot => '꒶',
159 YiRadicals::YiRadicalJjie => '꒷',
160 YiRadicals::YiRadicalWo => '꒸',
161 YiRadicals::YiRadicalDu => '꒹',
162 YiRadicals::YiRadicalShur => '꒺',
163 YiRadicals::YiRadicalLie => '꒻',
164 YiRadicals::YiRadicalCy => '꒼',
165 YiRadicals::YiRadicalCuop => '꒽',
166 YiRadicals::YiRadicalCip => '꒾',
167 YiRadicals::YiRadicalHxop => '꒿',
168 YiRadicals::YiRadicalShat => '꓀',
169 YiRadicals::YiRadicalZur => '꓁',
170 YiRadicals::YiRadicalShop => '꓂',
171 YiRadicals::YiRadicalChe => '꓃',
172 YiRadicals::YiRadicalZziet => '꓄',
173 YiRadicals::YiRadicalNbie => '꓅',
174 YiRadicals::YiRadicalKe => '꓆',
175 }
176 }
177}
178
179impl std::convert::TryFrom<char> for YiRadicals {
180 type Error = ();
181 fn try_from(c: char) -> Result<Self, Self::Error> {
182 match c {
183 '꒐' => Ok(YiRadicals::YiRadicalQot),
184 '꒑' => Ok(YiRadicals::YiRadicalLi),
185 '꒒' => Ok(YiRadicals::YiRadicalKit),
186 '꒓' => Ok(YiRadicals::YiRadicalNyip),
187 '꒔' => Ok(YiRadicals::YiRadicalCyp),
188 '꒕' => Ok(YiRadicals::YiRadicalSsi),
189 '꒖' => Ok(YiRadicals::YiRadicalGgop),
190 '꒗' => Ok(YiRadicals::YiRadicalGep),
191 '꒘' => Ok(YiRadicals::YiRadicalMi),
192 '꒙' => Ok(YiRadicals::YiRadicalHxit),
193 '꒚' => Ok(YiRadicals::YiRadicalLyr),
194 '꒛' => Ok(YiRadicals::YiRadicalBbut),
195 '꒜' => Ok(YiRadicals::YiRadicalMop),
196 '꒝' => Ok(YiRadicals::YiRadicalYo),
197 '꒞' => Ok(YiRadicals::YiRadicalPut),
198 '꒟' => Ok(YiRadicals::YiRadicalHxuo),
199 '꒠' => Ok(YiRadicals::YiRadicalTat),
200 '꒡' => Ok(YiRadicals::YiRadicalGa),
201 '꒢' => Ok(YiRadicals::YiRadicalZup),
202 '꒣' => Ok(YiRadicals::YiRadicalCyt),
203 '꒤' => Ok(YiRadicals::YiRadicalDdur),
204 '꒥' => Ok(YiRadicals::YiRadicalBur),
205 '꒦' => Ok(YiRadicals::YiRadicalGguo),
206 '꒧' => Ok(YiRadicals::YiRadicalNyop),
207 '꒨' => Ok(YiRadicals::YiRadicalTu),
208 '꒩' => Ok(YiRadicals::YiRadicalOp),
209 '꒪' => Ok(YiRadicals::YiRadicalJjut),
210 '꒫' => Ok(YiRadicals::YiRadicalZot),
211 '꒬' => Ok(YiRadicals::YiRadicalPyt),
212 '꒭' => Ok(YiRadicals::YiRadicalHmo),
213 '꒮' => Ok(YiRadicals::YiRadicalYit),
214 '꒯' => Ok(YiRadicals::YiRadicalVur),
215 '꒰' => Ok(YiRadicals::YiRadicalShy),
216 '꒱' => Ok(YiRadicals::YiRadicalVep),
217 '꒲' => Ok(YiRadicals::YiRadicalZa),
218 '꒳' => Ok(YiRadicals::YiRadicalJo),
219 '꒴' => Ok(YiRadicals::YiRadicalNzup),
220 '꒵' => Ok(YiRadicals::YiRadicalJjy),
221 '꒶' => Ok(YiRadicals::YiRadicalGot),
222 '꒷' => Ok(YiRadicals::YiRadicalJjie),
223 '꒸' => Ok(YiRadicals::YiRadicalWo),
224 '꒹' => Ok(YiRadicals::YiRadicalDu),
225 '꒺' => Ok(YiRadicals::YiRadicalShur),
226 '꒻' => Ok(YiRadicals::YiRadicalLie),
227 '꒼' => Ok(YiRadicals::YiRadicalCy),
228 '꒽' => Ok(YiRadicals::YiRadicalCuop),
229 '꒾' => Ok(YiRadicals::YiRadicalCip),
230 '꒿' => Ok(YiRadicals::YiRadicalHxop),
231 '꓀' => Ok(YiRadicals::YiRadicalShat),
232 '꓁' => Ok(YiRadicals::YiRadicalZur),
233 '꓂' => Ok(YiRadicals::YiRadicalShop),
234 '꓃' => Ok(YiRadicals::YiRadicalChe),
235 '꓄' => Ok(YiRadicals::YiRadicalZziet),
236 '꓅' => Ok(YiRadicals::YiRadicalNbie),
237 '꓆' => Ok(YiRadicals::YiRadicalKe),
238 _ => Err(()),
239 }
240 }
241}
242
243impl Into<u32> for YiRadicals {
244 fn into(self) -> u32 {
245 let c: char = self.into();
246 let hex = c
247 .escape_unicode()
248 .to_string()
249 .replace("\\u{", "")
250 .replace("}", "");
251 u32::from_str_radix(&hex, 16).unwrap()
252 }
253}
254
255impl std::convert::TryFrom<u32> for YiRadicals {
256 type Error = ();
257 fn try_from(u: u32) -> Result<Self, Self::Error> {
258 if let Ok(c) = char::try_from(u) {
259 Self::try_from(c)
260 } else {
261 Err(())
262 }
263 }
264}
265
266impl Iterator for YiRadicals {
267 type Item = Self;
268 fn next(&mut self) -> Option<Self> {
269 let index: u32 = (*self).into();
270 use std::convert::TryFrom;
271 Self::try_from(index + 1).ok()
272 }
273}
274
275impl YiRadicals {
276 pub fn new() -> Self {
278 YiRadicals::YiRadicalQot
279 }
280
281 pub fn name(&self) -> String {
283 let s = std::format!("YiRadicals{:#?}", self);
284 string_morph::to_sentence_case(&s)
285 }
286}