1use std::fmt;
8use std::str::FromStr;
9
10use crate::Error;
11
12#[non_exhaustive]
14#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
15#[rustfmt::skip]
16pub enum WrittenUnit {
17 A,
19 Aa,
21 Ah,
23 Ai,
25 At,
27 B,
29 B2,
31 C,
33 Cc,
35 Ch,
37 Cp,
39 Cr,
41 Cs,
43 D,
45 Db,
47 Dd,
49 Dh,
51 Dp,
53 Dt,
55 E,
57 F,
59 G,
61 G2,
63 G3,
65 G4,
67 Gc,
69 Gh,
71 Gp,
73 Gx,
75 H,
77 Hb,
79 Hc,
81 Hh,
83 Hp,
85 Hr,
87 Hx,
89 Hx2,
91 I,
93 I3,
95 Ic,
97 Ip,
99 Ix,
101 Iy,
103 J,
105 J2,
107 Jb,
109 Jc,
111 K,
113 K2,
115 Kc,
117 Kh,
119 Kp,
121 L,
123 Lv,
125 M,
127 M2,
129 Mvs,
131 N,
133 N2,
135 Nirugu,
137 Nx,
139 Ny,
141 O,
143 Ob,
145 Oh,
147 Op,
149 Ot,
151 P,
153 Pb,
155 Pp,
157 R,
159 R2,
161 R3,
163 Rh,
165 Rr,
167 S,
169 Sh,
171 Sp,
173 Sz,
175 T,
177 Tb,
179 Th,
181 Tp,
183 Tt,
185 U,
187 Ue,
189 Uh,
191 Up,
193 Ux,
195 V,
197 W,
199 Wb,
201 Y,
203 Yp,
205 Z,
207 Zc,
209 Zr,
211 Zs,
213 Zs2,
215 Zwj,
217 Zz,
219}
220
221#[rustfmt::skip]
222impl WrittenUnit {
223 pub const ALL: [WrittenUnit; 101] = [
225 WrittenUnit::A,
226 WrittenUnit::Aa,
227 WrittenUnit::Ah,
228 WrittenUnit::Ai,
229 WrittenUnit::At,
230 WrittenUnit::B,
231 WrittenUnit::B2,
232 WrittenUnit::C,
233 WrittenUnit::Cc,
234 WrittenUnit::Ch,
235 WrittenUnit::Cp,
236 WrittenUnit::Cr,
237 WrittenUnit::Cs,
238 WrittenUnit::D,
239 WrittenUnit::Db,
240 WrittenUnit::Dd,
241 WrittenUnit::Dh,
242 WrittenUnit::Dp,
243 WrittenUnit::Dt,
244 WrittenUnit::E,
245 WrittenUnit::F,
246 WrittenUnit::G,
247 WrittenUnit::G2,
248 WrittenUnit::G3,
249 WrittenUnit::G4,
250 WrittenUnit::Gc,
251 WrittenUnit::Gh,
252 WrittenUnit::Gp,
253 WrittenUnit::Gx,
254 WrittenUnit::H,
255 WrittenUnit::Hb,
256 WrittenUnit::Hc,
257 WrittenUnit::Hh,
258 WrittenUnit::Hp,
259 WrittenUnit::Hr,
260 WrittenUnit::Hx,
261 WrittenUnit::Hx2,
262 WrittenUnit::I,
263 WrittenUnit::I3,
264 WrittenUnit::Ic,
265 WrittenUnit::Ip,
266 WrittenUnit::Ix,
267 WrittenUnit::Iy,
268 WrittenUnit::J,
269 WrittenUnit::J2,
270 WrittenUnit::Jb,
271 WrittenUnit::Jc,
272 WrittenUnit::K,
273 WrittenUnit::K2,
274 WrittenUnit::Kc,
275 WrittenUnit::Kh,
276 WrittenUnit::Kp,
277 WrittenUnit::L,
278 WrittenUnit::Lv,
279 WrittenUnit::M,
280 WrittenUnit::M2,
281 WrittenUnit::Mvs,
282 WrittenUnit::N,
283 WrittenUnit::N2,
284 WrittenUnit::Nirugu,
285 WrittenUnit::Nx,
286 WrittenUnit::Ny,
287 WrittenUnit::O,
288 WrittenUnit::Ob,
289 WrittenUnit::Oh,
290 WrittenUnit::Op,
291 WrittenUnit::Ot,
292 WrittenUnit::P,
293 WrittenUnit::Pb,
294 WrittenUnit::Pp,
295 WrittenUnit::R,
296 WrittenUnit::R2,
297 WrittenUnit::R3,
298 WrittenUnit::Rh,
299 WrittenUnit::Rr,
300 WrittenUnit::S,
301 WrittenUnit::Sh,
302 WrittenUnit::Sp,
303 WrittenUnit::Sz,
304 WrittenUnit::T,
305 WrittenUnit::Tb,
306 WrittenUnit::Th,
307 WrittenUnit::Tp,
308 WrittenUnit::Tt,
309 WrittenUnit::U,
310 WrittenUnit::Ue,
311 WrittenUnit::Uh,
312 WrittenUnit::Up,
313 WrittenUnit::Ux,
314 WrittenUnit::V,
315 WrittenUnit::W,
316 WrittenUnit::Wb,
317 WrittenUnit::Y,
318 WrittenUnit::Yp,
319 WrittenUnit::Z,
320 WrittenUnit::Zc,
321 WrittenUnit::Zr,
322 WrittenUnit::Zs,
323 WrittenUnit::Zs2,
324 WrittenUnit::Zwj,
325 WrittenUnit::Zz,
326 ];
327
328 pub const fn as_str(self) -> &'static str {
330 match self {
331 WrittenUnit::A => "A",
332 WrittenUnit::Aa => "Aa",
333 WrittenUnit::Ah => "Ah",
334 WrittenUnit::Ai => "Ai",
335 WrittenUnit::At => "At",
336 WrittenUnit::B => "B",
337 WrittenUnit::B2 => "B2",
338 WrittenUnit::C => "C",
339 WrittenUnit::Cc => "Cc",
340 WrittenUnit::Ch => "Ch",
341 WrittenUnit::Cp => "Cp",
342 WrittenUnit::Cr => "Cr",
343 WrittenUnit::Cs => "Cs",
344 WrittenUnit::D => "D",
345 WrittenUnit::Db => "Db",
346 WrittenUnit::Dd => "Dd",
347 WrittenUnit::Dh => "Dh",
348 WrittenUnit::Dp => "Dp",
349 WrittenUnit::Dt => "Dt",
350 WrittenUnit::E => "E",
351 WrittenUnit::F => "F",
352 WrittenUnit::G => "G",
353 WrittenUnit::G2 => "G2",
354 WrittenUnit::G3 => "G3",
355 WrittenUnit::G4 => "G4",
356 WrittenUnit::Gc => "Gc",
357 WrittenUnit::Gh => "Gh",
358 WrittenUnit::Gp => "Gp",
359 WrittenUnit::Gx => "Gx",
360 WrittenUnit::H => "H",
361 WrittenUnit::Hb => "Hb",
362 WrittenUnit::Hc => "Hc",
363 WrittenUnit::Hh => "Hh",
364 WrittenUnit::Hp => "Hp",
365 WrittenUnit::Hr => "Hr",
366 WrittenUnit::Hx => "Hx",
367 WrittenUnit::Hx2 => "Hx2",
368 WrittenUnit::I => "I",
369 WrittenUnit::I3 => "I3",
370 WrittenUnit::Ic => "Ic",
371 WrittenUnit::Ip => "Ip",
372 WrittenUnit::Ix => "Ix",
373 WrittenUnit::Iy => "Iy",
374 WrittenUnit::J => "J",
375 WrittenUnit::J2 => "J2",
376 WrittenUnit::Jb => "Jb",
377 WrittenUnit::Jc => "Jc",
378 WrittenUnit::K => "K",
379 WrittenUnit::K2 => "K2",
380 WrittenUnit::Kc => "Kc",
381 WrittenUnit::Kh => "Kh",
382 WrittenUnit::Kp => "Kp",
383 WrittenUnit::L => "L",
384 WrittenUnit::Lv => "Lv",
385 WrittenUnit::M => "M",
386 WrittenUnit::M2 => "M2",
387 WrittenUnit::Mvs => "Mvs",
388 WrittenUnit::N => "N",
389 WrittenUnit::N2 => "N2",
390 WrittenUnit::Nirugu => "Nirugu",
391 WrittenUnit::Nx => "Nx",
392 WrittenUnit::Ny => "Ny",
393 WrittenUnit::O => "O",
394 WrittenUnit::Ob => "Ob",
395 WrittenUnit::Oh => "Oh",
396 WrittenUnit::Op => "Op",
397 WrittenUnit::Ot => "Ot",
398 WrittenUnit::P => "P",
399 WrittenUnit::Pb => "Pb",
400 WrittenUnit::Pp => "Pp",
401 WrittenUnit::R => "R",
402 WrittenUnit::R2 => "R2",
403 WrittenUnit::R3 => "R3",
404 WrittenUnit::Rh => "Rh",
405 WrittenUnit::Rr => "Rr",
406 WrittenUnit::S => "S",
407 WrittenUnit::Sh => "Sh",
408 WrittenUnit::Sp => "Sp",
409 WrittenUnit::Sz => "Sz",
410 WrittenUnit::T => "T",
411 WrittenUnit::Tb => "Tb",
412 WrittenUnit::Th => "Th",
413 WrittenUnit::Tp => "Tp",
414 WrittenUnit::Tt => "Tt",
415 WrittenUnit::U => "U",
416 WrittenUnit::Ue => "Ue",
417 WrittenUnit::Uh => "Uh",
418 WrittenUnit::Up => "Up",
419 WrittenUnit::Ux => "Ux",
420 WrittenUnit::V => "V",
421 WrittenUnit::W => "W",
422 WrittenUnit::Wb => "Wb",
423 WrittenUnit::Y => "Y",
424 WrittenUnit::Yp => "Yp",
425 WrittenUnit::Z => "Z",
426 WrittenUnit::Zc => "Zc",
427 WrittenUnit::Zr => "Zr",
428 WrittenUnit::Zs => "Zs",
429 WrittenUnit::Zs2 => "Zs2",
430 WrittenUnit::Zwj => "Zwj",
431 WrittenUnit::Zz => "Zz",
432 }
433 }
434
435 pub const fn is_structural(self) -> bool {
437 matches!(self, WrittenUnit::Mvs | WrittenUnit::Nirugu | WrittenUnit::Zwj)
438 }
439}
440
441#[rustfmt::skip]
442impl FromStr for WrittenUnit {
443 type Err = Error;
444
445 fn from_str(name: &str) -> Result<WrittenUnit, Error> {
446 match name {
447 "A" => Ok(WrittenUnit::A),
448 "Aa" => Ok(WrittenUnit::Aa),
449 "Ah" => Ok(WrittenUnit::Ah),
450 "Ai" => Ok(WrittenUnit::Ai),
451 "At" => Ok(WrittenUnit::At),
452 "B" => Ok(WrittenUnit::B),
453 "B2" => Ok(WrittenUnit::B2),
454 "C" => Ok(WrittenUnit::C),
455 "Cc" => Ok(WrittenUnit::Cc),
456 "Ch" => Ok(WrittenUnit::Ch),
457 "Cp" => Ok(WrittenUnit::Cp),
458 "Cr" => Ok(WrittenUnit::Cr),
459 "Cs" => Ok(WrittenUnit::Cs),
460 "D" => Ok(WrittenUnit::D),
461 "Db" => Ok(WrittenUnit::Db),
462 "Dd" => Ok(WrittenUnit::Dd),
463 "Dh" => Ok(WrittenUnit::Dh),
464 "Dp" => Ok(WrittenUnit::Dp),
465 "Dt" => Ok(WrittenUnit::Dt),
466 "E" => Ok(WrittenUnit::E),
467 "F" => Ok(WrittenUnit::F),
468 "G" => Ok(WrittenUnit::G),
469 "G2" => Ok(WrittenUnit::G2),
470 "G3" => Ok(WrittenUnit::G3),
471 "G4" => Ok(WrittenUnit::G4),
472 "Gc" => Ok(WrittenUnit::Gc),
473 "Gh" => Ok(WrittenUnit::Gh),
474 "Gp" => Ok(WrittenUnit::Gp),
475 "Gx" => Ok(WrittenUnit::Gx),
476 "H" => Ok(WrittenUnit::H),
477 "Hb" => Ok(WrittenUnit::Hb),
478 "Hc" => Ok(WrittenUnit::Hc),
479 "Hh" => Ok(WrittenUnit::Hh),
480 "Hp" => Ok(WrittenUnit::Hp),
481 "Hr" => Ok(WrittenUnit::Hr),
482 "Hx" => Ok(WrittenUnit::Hx),
483 "Hx2" => Ok(WrittenUnit::Hx2),
484 "I" => Ok(WrittenUnit::I),
485 "I3" => Ok(WrittenUnit::I3),
486 "Ic" => Ok(WrittenUnit::Ic),
487 "Ip" => Ok(WrittenUnit::Ip),
488 "Ix" => Ok(WrittenUnit::Ix),
489 "Iy" => Ok(WrittenUnit::Iy),
490 "J" => Ok(WrittenUnit::J),
491 "J2" => Ok(WrittenUnit::J2),
492 "Jb" => Ok(WrittenUnit::Jb),
493 "Jc" => Ok(WrittenUnit::Jc),
494 "K" => Ok(WrittenUnit::K),
495 "K2" => Ok(WrittenUnit::K2),
496 "Kc" => Ok(WrittenUnit::Kc),
497 "Kh" => Ok(WrittenUnit::Kh),
498 "Kp" => Ok(WrittenUnit::Kp),
499 "L" => Ok(WrittenUnit::L),
500 "Lv" => Ok(WrittenUnit::Lv),
501 "M" => Ok(WrittenUnit::M),
502 "M2" => Ok(WrittenUnit::M2),
503 "Mvs" => Ok(WrittenUnit::Mvs),
504 "N" => Ok(WrittenUnit::N),
505 "N2" => Ok(WrittenUnit::N2),
506 "Nirugu" => Ok(WrittenUnit::Nirugu),
507 "Nx" => Ok(WrittenUnit::Nx),
508 "Ny" => Ok(WrittenUnit::Ny),
509 "O" => Ok(WrittenUnit::O),
510 "Ob" => Ok(WrittenUnit::Ob),
511 "Oh" => Ok(WrittenUnit::Oh),
512 "Op" => Ok(WrittenUnit::Op),
513 "Ot" => Ok(WrittenUnit::Ot),
514 "P" => Ok(WrittenUnit::P),
515 "Pb" => Ok(WrittenUnit::Pb),
516 "Pp" => Ok(WrittenUnit::Pp),
517 "R" => Ok(WrittenUnit::R),
518 "R2" => Ok(WrittenUnit::R2),
519 "R3" => Ok(WrittenUnit::R3),
520 "Rh" => Ok(WrittenUnit::Rh),
521 "Rr" => Ok(WrittenUnit::Rr),
522 "S" => Ok(WrittenUnit::S),
523 "Sh" => Ok(WrittenUnit::Sh),
524 "Sp" => Ok(WrittenUnit::Sp),
525 "Sz" => Ok(WrittenUnit::Sz),
526 "T" => Ok(WrittenUnit::T),
527 "Tb" => Ok(WrittenUnit::Tb),
528 "Th" => Ok(WrittenUnit::Th),
529 "Tp" => Ok(WrittenUnit::Tp),
530 "Tt" => Ok(WrittenUnit::Tt),
531 "U" => Ok(WrittenUnit::U),
532 "Ue" => Ok(WrittenUnit::Ue),
533 "Uh" => Ok(WrittenUnit::Uh),
534 "Up" => Ok(WrittenUnit::Up),
535 "Ux" => Ok(WrittenUnit::Ux),
536 "V" => Ok(WrittenUnit::V),
537 "W" => Ok(WrittenUnit::W),
538 "Wb" => Ok(WrittenUnit::Wb),
539 "Y" => Ok(WrittenUnit::Y),
540 "Yp" => Ok(WrittenUnit::Yp),
541 "Z" => Ok(WrittenUnit::Z),
542 "Zc" => Ok(WrittenUnit::Zc),
543 "Zr" => Ok(WrittenUnit::Zr),
544 "Zs" => Ok(WrittenUnit::Zs),
545 "Zs2" => Ok(WrittenUnit::Zs2),
546 "Zwj" => Ok(WrittenUnit::Zwj),
547 "Zz" => Ok(WrittenUnit::Zz),
548 _ => Err(Error::UnknownName { kind: "written unit", name: name.to_owned() }),
549 }
550 }
551}
552
553#[rustfmt::skip]
554impl fmt::Display for WrittenUnit {
555 fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
556 formatter.write_str(self.as_str())
557 }
558}
559
560#[non_exhaustive]
562#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
563#[rustfmt::skip]
564pub enum Condition {
565 Chachlag,
567 ChachlagOnset,
569 ChachlagOnsetGb,
571 Devsger,
573 Dotless,
575 Feminine,
577 FeminineMarked,
579 Marked,
581 MasculineDevsger,
583 MasculineOnset,
585 Onset,
587 Particle,
589 PostBowed,
591 PostBowedFeminine,
593 VowelDevsger,
595}
596
597#[rustfmt::skip]
598impl Condition {
599 pub const ALL: [Condition; 15] = [
601 Condition::Chachlag,
602 Condition::ChachlagOnset,
603 Condition::ChachlagOnsetGb,
604 Condition::Devsger,
605 Condition::Dotless,
606 Condition::Feminine,
607 Condition::FeminineMarked,
608 Condition::Marked,
609 Condition::MasculineDevsger,
610 Condition::MasculineOnset,
611 Condition::Onset,
612 Condition::Particle,
613 Condition::PostBowed,
614 Condition::PostBowedFeminine,
615 Condition::VowelDevsger,
616 ];
617
618 pub const fn as_str(self) -> &'static str {
620 match self {
621 Condition::Chachlag => "chachlag",
622 Condition::ChachlagOnset => "chachlag_onset",
623 Condition::ChachlagOnsetGb => "chachlag_onset_gb",
624 Condition::Devsger => "devsger",
625 Condition::Dotless => "dotless",
626 Condition::Feminine => "feminine",
627 Condition::FeminineMarked => "feminine_marked",
628 Condition::Marked => "marked",
629 Condition::MasculineDevsger => "masculine_devsger",
630 Condition::MasculineOnset => "masculine_onset",
631 Condition::Onset => "onset",
632 Condition::Particle => "particle",
633 Condition::PostBowed => "post_bowed",
634 Condition::PostBowedFeminine => "post_bowed_feminine",
635 Condition::VowelDevsger => "vowel_devsger",
636 }
637 }
638}
639
640#[rustfmt::skip]
641impl FromStr for Condition {
642 type Err = Error;
643
644 fn from_str(name: &str) -> Result<Condition, Error> {
645 match name {
646 "chachlag" => Ok(Condition::Chachlag),
647 "chachlag_onset" => Ok(Condition::ChachlagOnset),
648 "chachlag_onset_gb" => Ok(Condition::ChachlagOnsetGb),
649 "devsger" => Ok(Condition::Devsger),
650 "dotless" => Ok(Condition::Dotless),
651 "feminine" => Ok(Condition::Feminine),
652 "feminine_marked" => Ok(Condition::FeminineMarked),
653 "marked" => Ok(Condition::Marked),
654 "masculine_devsger" => Ok(Condition::MasculineDevsger),
655 "masculine_onset" => Ok(Condition::MasculineOnset),
656 "onset" => Ok(Condition::Onset),
657 "particle" => Ok(Condition::Particle),
658 "post_bowed" => Ok(Condition::PostBowed),
659 "post_bowed_feminine" => Ok(Condition::PostBowedFeminine),
660 "vowel_devsger" => Ok(Condition::VowelDevsger),
661 _ => Err(Error::UnknownName { kind: "condition", name: name.to_owned() }),
662 }
663 }
664}
665
666#[rustfmt::skip]
667impl fmt::Display for Condition {
668 fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
669 formatter.write_str(self.as_str())
670 }
671}
672
673#[non_exhaustive]
675#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
676#[rustfmt::skip]
677pub enum Alias {
678 A,
680 B,
682 C,
684 Ch,
686 Cr,
688 D,
690 E,
692 Ee,
694 F,
696 G,
698 Gh,
700 H,
702 Hh,
704 I,
706 Ii,
708 J,
710 Jy,
712 K,
714 K2,
716 Kh,
718 L,
720 Lh,
722 Lvs,
724 M,
726 N,
728 Ng,
730 Ny,
732 O,
734 Oe,
736 P,
738 R,
740 Rh,
742 S,
744 Sbm,
746 Sh,
748 T,
750 U,
752 Ue,
754 W,
756 Y,
758 Z,
760 Zr,
762}
763
764#[rustfmt::skip]
765impl Alias {
766 pub const ALL: [Alias; 42] = [
768 Alias::A,
769 Alias::B,
770 Alias::C,
771 Alias::Ch,
772 Alias::Cr,
773 Alias::D,
774 Alias::E,
775 Alias::Ee,
776 Alias::F,
777 Alias::G,
778 Alias::Gh,
779 Alias::H,
780 Alias::Hh,
781 Alias::I,
782 Alias::Ii,
783 Alias::J,
784 Alias::Jy,
785 Alias::K,
786 Alias::K2,
787 Alias::Kh,
788 Alias::L,
789 Alias::Lh,
790 Alias::Lvs,
791 Alias::M,
792 Alias::N,
793 Alias::Ng,
794 Alias::Ny,
795 Alias::O,
796 Alias::Oe,
797 Alias::P,
798 Alias::R,
799 Alias::Rh,
800 Alias::S,
801 Alias::Sbm,
802 Alias::Sh,
803 Alias::T,
804 Alias::U,
805 Alias::Ue,
806 Alias::W,
807 Alias::Y,
808 Alias::Z,
809 Alias::Zr,
810 ];
811
812 pub const fn as_str(self) -> &'static str {
814 match self {
815 Alias::A => "a",
816 Alias::B => "b",
817 Alias::C => "c",
818 Alias::Ch => "ch",
819 Alias::Cr => "cr",
820 Alias::D => "d",
821 Alias::E => "e",
822 Alias::Ee => "ee",
823 Alias::F => "f",
824 Alias::G => "g",
825 Alias::Gh => "gh",
826 Alias::H => "h",
827 Alias::Hh => "hh",
828 Alias::I => "i",
829 Alias::Ii => "ii",
830 Alias::J => "j",
831 Alias::Jy => "jy",
832 Alias::K => "k",
833 Alias::K2 => "k2",
834 Alias::Kh => "kh",
835 Alias::L => "l",
836 Alias::Lh => "lh",
837 Alias::Lvs => "lvs",
838 Alias::M => "m",
839 Alias::N => "n",
840 Alias::Ng => "ng",
841 Alias::Ny => "ny",
842 Alias::O => "o",
843 Alias::Oe => "oe",
844 Alias::P => "p",
845 Alias::R => "r",
846 Alias::Rh => "rh",
847 Alias::S => "s",
848 Alias::Sbm => "sbm",
849 Alias::Sh => "sh",
850 Alias::T => "t",
851 Alias::U => "u",
852 Alias::Ue => "ue",
853 Alias::W => "w",
854 Alias::Y => "y",
855 Alias::Z => "z",
856 Alias::Zr => "zr",
857 }
858 }
859}
860
861#[rustfmt::skip]
862impl FromStr for Alias {
863 type Err = Error;
864
865 fn from_str(name: &str) -> Result<Alias, Error> {
866 match name {
867 "a" => Ok(Alias::A),
868 "b" => Ok(Alias::B),
869 "c" => Ok(Alias::C),
870 "ch" => Ok(Alias::Ch),
871 "cr" => Ok(Alias::Cr),
872 "d" => Ok(Alias::D),
873 "e" => Ok(Alias::E),
874 "ee" => Ok(Alias::Ee),
875 "f" => Ok(Alias::F),
876 "g" => Ok(Alias::G),
877 "gh" => Ok(Alias::Gh),
878 "h" => Ok(Alias::H),
879 "hh" => Ok(Alias::Hh),
880 "i" => Ok(Alias::I),
881 "ii" => Ok(Alias::Ii),
882 "j" => Ok(Alias::J),
883 "jy" => Ok(Alias::Jy),
884 "k" => Ok(Alias::K),
885 "k2" => Ok(Alias::K2),
886 "kh" => Ok(Alias::Kh),
887 "l" => Ok(Alias::L),
888 "lh" => Ok(Alias::Lh),
889 "lvs" => Ok(Alias::Lvs),
890 "m" => Ok(Alias::M),
891 "n" => Ok(Alias::N),
892 "ng" => Ok(Alias::Ng),
893 "ny" => Ok(Alias::Ny),
894 "o" => Ok(Alias::O),
895 "oe" => Ok(Alias::Oe),
896 "p" => Ok(Alias::P),
897 "r" => Ok(Alias::R),
898 "rh" => Ok(Alias::Rh),
899 "s" => Ok(Alias::S),
900 "sbm" => Ok(Alias::Sbm),
901 "sh" => Ok(Alias::Sh),
902 "t" => Ok(Alias::T),
903 "u" => Ok(Alias::U),
904 "ue" => Ok(Alias::Ue),
905 "w" => Ok(Alias::W),
906 "y" => Ok(Alias::Y),
907 "z" => Ok(Alias::Z),
908 "zr" => Ok(Alias::Zr),
909 _ => Err(Error::UnknownName { kind: "alias", name: name.to_owned() }),
910 }
911 }
912}
913
914#[rustfmt::skip]
915impl fmt::Display for Alias {
916 fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
917 formatter.write_str(self.as_str())
918 }
919}