1
2#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum Siddham {
5 LetterA,
7 LetterAa,
9 LetterI,
11 LetterIi,
13 LetterU,
15 LetterUu,
17 LetterVocalicR,
19 LetterVocalicRr,
21 LetterVocalicL,
23 LetterVocalicLl,
25 LetterE,
27 LetterAi,
29 LetterO,
31 LetterAu,
33 LetterKa,
35 LetterKha,
37 LetterGa,
39 LetterGha,
41 LetterNga,
43 LetterCa,
45 LetterCha,
47 LetterJa,
49 LetterJha,
51 LetterNya,
53 LetterTta,
55 LetterTtha,
57 LetterDda,
59 LetterDdha,
61 LetterNna,
63 LetterTa,
65 LetterTha,
67 LetterDa,
69 LetterDha,
71 LetterNa,
73 LetterPa,
75 LetterPha,
77 LetterBa,
79 LetterBha,
81 LetterMa,
83 LetterYa,
85 LetterRa,
87 LetterLa,
89 LetterVa,
91 LetterSha,
93 LetterSsa,
95 LetterSa,
97 LetterHa,
99 VowelSignAa,
101 VowelSignI,
103 VowelSignIi,
105 VowelSignU,
107 VowelSignUu,
109 VowelSignVocalicR,
111 VowelSignVocalicRr,
113 VowelSignE,
115 VowelSignAi,
117 VowelSignO,
119 VowelSignAu,
121 SignCandrabindu,
123 SignAnusvara,
125 SignVisarga,
127 SignVirama,
129 SignNukta,
131 Sign,
133 Danda,
135 DoubleDanda,
137 SeparatorDot,
139 SeparatorBar,
141 RepetitionMarkDash1,
143 RepetitionMarkDash2,
145 RepetitionMarkDash3,
147 EndOfTextMark,
149 SectionMarkWithTridentAndUDashShapedOrnaments,
151 SectionMarkWithTridentAndDottedCrescents,
153 SectionMarkWithRaysAndDottedCrescents,
155 SectionMarkWithRaysAndDottedDoubleCrescents,
157 SectionMarkWithRaysAndDottedTripleCrescents,
159 SectionMarkDoubleRing,
161 SectionMarkDoubleRingWithRays,
163 SectionMarkWithDoubleCrescents,
165 SectionMarkWithTripleCrescents,
167 SectionMarkWithQuadrupleCrescents,
169 SectionMarkWithSeptupleCrescents,
171 SectionMarkWithCirclesAndRays,
173 SectionMarkWithCirclesAndTwoEnclosures,
175 SectionMarkWithCirclesAndFourEnclosures,
177 LetterThreeDashCircleAlternateI,
179 LetterTwoDashCircleAlternateI,
181 LetterTwoDashCircleAlternateIi,
183 LetterAlternateU,
185 VowelSignAlternateU,
187 VowelSignAlternateUu,
189}
190
191impl Into<char> for Siddham {
192 fn into(self) -> char {
193 match self {
194 Siddham::LetterA => '𑖀',
195 Siddham::LetterAa => '𑖁',
196 Siddham::LetterI => '𑖂',
197 Siddham::LetterIi => '𑖃',
198 Siddham::LetterU => '𑖄',
199 Siddham::LetterUu => '𑖅',
200 Siddham::LetterVocalicR => '𑖆',
201 Siddham::LetterVocalicRr => '𑖇',
202 Siddham::LetterVocalicL => '𑖈',
203 Siddham::LetterVocalicLl => '𑖉',
204 Siddham::LetterE => '𑖊',
205 Siddham::LetterAi => '𑖋',
206 Siddham::LetterO => '𑖌',
207 Siddham::LetterAu => '𑖍',
208 Siddham::LetterKa => '𑖎',
209 Siddham::LetterKha => '𑖏',
210 Siddham::LetterGa => '𑖐',
211 Siddham::LetterGha => '𑖑',
212 Siddham::LetterNga => '𑖒',
213 Siddham::LetterCa => '𑖓',
214 Siddham::LetterCha => '𑖔',
215 Siddham::LetterJa => '𑖕',
216 Siddham::LetterJha => '𑖖',
217 Siddham::LetterNya => '𑖗',
218 Siddham::LetterTta => '𑖘',
219 Siddham::LetterTtha => '𑖙',
220 Siddham::LetterDda => '𑖚',
221 Siddham::LetterDdha => '𑖛',
222 Siddham::LetterNna => '𑖜',
223 Siddham::LetterTa => '𑖝',
224 Siddham::LetterTha => '𑖞',
225 Siddham::LetterDa => '𑖟',
226 Siddham::LetterDha => '𑖠',
227 Siddham::LetterNa => '𑖡',
228 Siddham::LetterPa => '𑖢',
229 Siddham::LetterPha => '𑖣',
230 Siddham::LetterBa => '𑖤',
231 Siddham::LetterBha => '𑖥',
232 Siddham::LetterMa => '𑖦',
233 Siddham::LetterYa => '𑖧',
234 Siddham::LetterRa => '𑖨',
235 Siddham::LetterLa => '𑖩',
236 Siddham::LetterVa => '𑖪',
237 Siddham::LetterSha => '𑖫',
238 Siddham::LetterSsa => '𑖬',
239 Siddham::LetterSa => '𑖭',
240 Siddham::LetterHa => '𑖮',
241 Siddham::VowelSignAa => '𑖯',
242 Siddham::VowelSignI => '𑖰',
243 Siddham::VowelSignIi => '𑖱',
244 Siddham::VowelSignU => '𑖲',
245 Siddham::VowelSignUu => '𑖳',
246 Siddham::VowelSignVocalicR => '𑖴',
247 Siddham::VowelSignVocalicRr => '𑖵',
248 Siddham::VowelSignE => '𑖸',
249 Siddham::VowelSignAi => '𑖹',
250 Siddham::VowelSignO => '𑖺',
251 Siddham::VowelSignAu => '𑖻',
252 Siddham::SignCandrabindu => '𑖼',
253 Siddham::SignAnusvara => '𑖽',
254 Siddham::SignVisarga => '𑖾',
255 Siddham::SignVirama => '𑖿',
256 Siddham::SignNukta => '𑗀',
257 Siddham::Sign => '𑗁',
258 Siddham::Danda => '𑗂',
259 Siddham::DoubleDanda => '𑗃',
260 Siddham::SeparatorDot => '𑗄',
261 Siddham::SeparatorBar => '𑗅',
262 Siddham::RepetitionMarkDash1 => '𑗆',
263 Siddham::RepetitionMarkDash2 => '𑗇',
264 Siddham::RepetitionMarkDash3 => '𑗈',
265 Siddham::EndOfTextMark => '𑗉',
266 Siddham::SectionMarkWithTridentAndUDashShapedOrnaments => '𑗊',
267 Siddham::SectionMarkWithTridentAndDottedCrescents => '𑗋',
268 Siddham::SectionMarkWithRaysAndDottedCrescents => '𑗌',
269 Siddham::SectionMarkWithRaysAndDottedDoubleCrescents => '𑗍',
270 Siddham::SectionMarkWithRaysAndDottedTripleCrescents => '𑗎',
271 Siddham::SectionMarkDoubleRing => '𑗏',
272 Siddham::SectionMarkDoubleRingWithRays => '𑗐',
273 Siddham::SectionMarkWithDoubleCrescents => '𑗑',
274 Siddham::SectionMarkWithTripleCrescents => '𑗒',
275 Siddham::SectionMarkWithQuadrupleCrescents => '𑗓',
276 Siddham::SectionMarkWithSeptupleCrescents => '𑗔',
277 Siddham::SectionMarkWithCirclesAndRays => '𑗕',
278 Siddham::SectionMarkWithCirclesAndTwoEnclosures => '𑗖',
279 Siddham::SectionMarkWithCirclesAndFourEnclosures => '𑗗',
280 Siddham::LetterThreeDashCircleAlternateI => '𑗘',
281 Siddham::LetterTwoDashCircleAlternateI => '𑗙',
282 Siddham::LetterTwoDashCircleAlternateIi => '𑗚',
283 Siddham::LetterAlternateU => '𑗛',
284 Siddham::VowelSignAlternateU => '𑗜',
285 Siddham::VowelSignAlternateUu => '𑗝',
286 }
287 }
288}
289
290impl std::convert::TryFrom<char> for Siddham {
291 type Error = ();
292 fn try_from(c: char) -> Result<Self, Self::Error> {
293 match c {
294 '𑖀' => Ok(Siddham::LetterA),
295 '𑖁' => Ok(Siddham::LetterAa),
296 '𑖂' => Ok(Siddham::LetterI),
297 '𑖃' => Ok(Siddham::LetterIi),
298 '𑖄' => Ok(Siddham::LetterU),
299 '𑖅' => Ok(Siddham::LetterUu),
300 '𑖆' => Ok(Siddham::LetterVocalicR),
301 '𑖇' => Ok(Siddham::LetterVocalicRr),
302 '𑖈' => Ok(Siddham::LetterVocalicL),
303 '𑖉' => Ok(Siddham::LetterVocalicLl),
304 '𑖊' => Ok(Siddham::LetterE),
305 '𑖋' => Ok(Siddham::LetterAi),
306 '𑖌' => Ok(Siddham::LetterO),
307 '𑖍' => Ok(Siddham::LetterAu),
308 '𑖎' => Ok(Siddham::LetterKa),
309 '𑖏' => Ok(Siddham::LetterKha),
310 '𑖐' => Ok(Siddham::LetterGa),
311 '𑖑' => Ok(Siddham::LetterGha),
312 '𑖒' => Ok(Siddham::LetterNga),
313 '𑖓' => Ok(Siddham::LetterCa),
314 '𑖔' => Ok(Siddham::LetterCha),
315 '𑖕' => Ok(Siddham::LetterJa),
316 '𑖖' => Ok(Siddham::LetterJha),
317 '𑖗' => Ok(Siddham::LetterNya),
318 '𑖘' => Ok(Siddham::LetterTta),
319 '𑖙' => Ok(Siddham::LetterTtha),
320 '𑖚' => Ok(Siddham::LetterDda),
321 '𑖛' => Ok(Siddham::LetterDdha),
322 '𑖜' => Ok(Siddham::LetterNna),
323 '𑖝' => Ok(Siddham::LetterTa),
324 '𑖞' => Ok(Siddham::LetterTha),
325 '𑖟' => Ok(Siddham::LetterDa),
326 '𑖠' => Ok(Siddham::LetterDha),
327 '𑖡' => Ok(Siddham::LetterNa),
328 '𑖢' => Ok(Siddham::LetterPa),
329 '𑖣' => Ok(Siddham::LetterPha),
330 '𑖤' => Ok(Siddham::LetterBa),
331 '𑖥' => Ok(Siddham::LetterBha),
332 '𑖦' => Ok(Siddham::LetterMa),
333 '𑖧' => Ok(Siddham::LetterYa),
334 '𑖨' => Ok(Siddham::LetterRa),
335 '𑖩' => Ok(Siddham::LetterLa),
336 '𑖪' => Ok(Siddham::LetterVa),
337 '𑖫' => Ok(Siddham::LetterSha),
338 '𑖬' => Ok(Siddham::LetterSsa),
339 '𑖭' => Ok(Siddham::LetterSa),
340 '𑖮' => Ok(Siddham::LetterHa),
341 '𑖯' => Ok(Siddham::VowelSignAa),
342 '𑖰' => Ok(Siddham::VowelSignI),
343 '𑖱' => Ok(Siddham::VowelSignIi),
344 '𑖲' => Ok(Siddham::VowelSignU),
345 '𑖳' => Ok(Siddham::VowelSignUu),
346 '𑖴' => Ok(Siddham::VowelSignVocalicR),
347 '𑖵' => Ok(Siddham::VowelSignVocalicRr),
348 '𑖸' => Ok(Siddham::VowelSignE),
349 '𑖹' => Ok(Siddham::VowelSignAi),
350 '𑖺' => Ok(Siddham::VowelSignO),
351 '𑖻' => Ok(Siddham::VowelSignAu),
352 '𑖼' => Ok(Siddham::SignCandrabindu),
353 '𑖽' => Ok(Siddham::SignAnusvara),
354 '𑖾' => Ok(Siddham::SignVisarga),
355 '𑖿' => Ok(Siddham::SignVirama),
356 '𑗀' => Ok(Siddham::SignNukta),
357 '𑗁' => Ok(Siddham::Sign),
358 '𑗂' => Ok(Siddham::Danda),
359 '𑗃' => Ok(Siddham::DoubleDanda),
360 '𑗄' => Ok(Siddham::SeparatorDot),
361 '𑗅' => Ok(Siddham::SeparatorBar),
362 '𑗆' => Ok(Siddham::RepetitionMarkDash1),
363 '𑗇' => Ok(Siddham::RepetitionMarkDash2),
364 '𑗈' => Ok(Siddham::RepetitionMarkDash3),
365 '𑗉' => Ok(Siddham::EndOfTextMark),
366 '𑗊' => Ok(Siddham::SectionMarkWithTridentAndUDashShapedOrnaments),
367 '𑗋' => Ok(Siddham::SectionMarkWithTridentAndDottedCrescents),
368 '𑗌' => Ok(Siddham::SectionMarkWithRaysAndDottedCrescents),
369 '𑗍' => Ok(Siddham::SectionMarkWithRaysAndDottedDoubleCrescents),
370 '𑗎' => Ok(Siddham::SectionMarkWithRaysAndDottedTripleCrescents),
371 '𑗏' => Ok(Siddham::SectionMarkDoubleRing),
372 '𑗐' => Ok(Siddham::SectionMarkDoubleRingWithRays),
373 '𑗑' => Ok(Siddham::SectionMarkWithDoubleCrescents),
374 '𑗒' => Ok(Siddham::SectionMarkWithTripleCrescents),
375 '𑗓' => Ok(Siddham::SectionMarkWithQuadrupleCrescents),
376 '𑗔' => Ok(Siddham::SectionMarkWithSeptupleCrescents),
377 '𑗕' => Ok(Siddham::SectionMarkWithCirclesAndRays),
378 '𑗖' => Ok(Siddham::SectionMarkWithCirclesAndTwoEnclosures),
379 '𑗗' => Ok(Siddham::SectionMarkWithCirclesAndFourEnclosures),
380 '𑗘' => Ok(Siddham::LetterThreeDashCircleAlternateI),
381 '𑗙' => Ok(Siddham::LetterTwoDashCircleAlternateI),
382 '𑗚' => Ok(Siddham::LetterTwoDashCircleAlternateIi),
383 '𑗛' => Ok(Siddham::LetterAlternateU),
384 '𑗜' => Ok(Siddham::VowelSignAlternateU),
385 '𑗝' => Ok(Siddham::VowelSignAlternateUu),
386 _ => Err(()),
387 }
388 }
389}
390
391impl Into<u32> for Siddham {
392 fn into(self) -> u32 {
393 let c: char = self.into();
394 let hex = c
395 .escape_unicode()
396 .to_string()
397 .replace("\\u{", "")
398 .replace("}", "");
399 u32::from_str_radix(&hex, 16).unwrap()
400 }
401}
402
403impl std::convert::TryFrom<u32> for Siddham {
404 type Error = ();
405 fn try_from(u: u32) -> Result<Self, Self::Error> {
406 if let Ok(c) = char::try_from(u) {
407 Self::try_from(c)
408 } else {
409 Err(())
410 }
411 }
412}
413
414impl Iterator for Siddham {
415 type Item = Self;
416 fn next(&mut self) -> Option<Self> {
417 let index: u32 = (*self).into();
418 use std::convert::TryFrom;
419 Self::try_from(index + 1).ok()
420 }
421}
422
423impl Siddham {
424 pub fn new() -> Self {
426 Siddham::LetterA
427 }
428
429 pub fn name(&self) -> String {
431 let s = std::format!("Siddham{:#?}", self);
432 string_morph::to_sentence_case(&s)
433 }
434}