1
2#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum GlagoliticSupplement {
5 CombiningGlagoliticLetterAzu,
7 CombiningGlagoliticLetterBuky,
9 CombiningGlagoliticLetterVede,
11 CombiningGlagoliticLetterGlagoli,
13 CombiningGlagoliticLetterDobro,
15 CombiningGlagoliticLetterYestu,
17 CombiningGlagoliticLetterZhivete,
19 CombiningGlagoliticLetterZemlja,
21 CombiningGlagoliticLetterIzhe,
23 CombiningGlagoliticLetterInitialIzhe,
25 CombiningGlagoliticLetterI,
27 CombiningGlagoliticLetterDjervi,
29 CombiningGlagoliticLetterKako,
31 CombiningGlagoliticLetterLjudije,
33 CombiningGlagoliticLetterMyslite,
35 CombiningGlagoliticLetterNashi,
37 CombiningGlagoliticLetterOnu,
39 CombiningGlagoliticLetterPokoji,
41 CombiningGlagoliticLetterRitsi,
43 CombiningGlagoliticLetterSlovo,
45 CombiningGlagoliticLetterTvrido,
47 CombiningGlagoliticLetterUku,
49 CombiningGlagoliticLetterFritu,
51 CombiningGlagoliticLetterHeru,
53 CombiningGlagoliticLetterShta,
55 CombiningGlagoliticLetterTsi,
57 CombiningGlagoliticLetterChrivi,
59 CombiningGlagoliticLetterSha,
61 CombiningGlagoliticLetterYeru,
63 CombiningGlagoliticLetterYeri,
65 CombiningGlagoliticLetterYati,
67 CombiningGlagoliticLetterYu,
69 CombiningGlagoliticLetterSmallYus,
71 CombiningGlagoliticLetterYo,
73 CombiningGlagoliticLetterIotatedSmallYus,
75 CombiningGlagoliticLetterBigYus,
77 CombiningGlagoliticLetterIotatedBigYus,
79 CombiningGlagoliticLetterFita,
81}
82
83impl Into<char> for GlagoliticSupplement {
84 fn into(self) -> char {
85 match self {
86 GlagoliticSupplement::CombiningGlagoliticLetterAzu => '𞀀',
87 GlagoliticSupplement::CombiningGlagoliticLetterBuky => '𞀁',
88 GlagoliticSupplement::CombiningGlagoliticLetterVede => '𞀂',
89 GlagoliticSupplement::CombiningGlagoliticLetterGlagoli => '𞀃',
90 GlagoliticSupplement::CombiningGlagoliticLetterDobro => '𞀄',
91 GlagoliticSupplement::CombiningGlagoliticLetterYestu => '𞀅',
92 GlagoliticSupplement::CombiningGlagoliticLetterZhivete => '𞀆',
93 GlagoliticSupplement::CombiningGlagoliticLetterZemlja => '𞀈',
94 GlagoliticSupplement::CombiningGlagoliticLetterIzhe => '𞀉',
95 GlagoliticSupplement::CombiningGlagoliticLetterInitialIzhe => '𞀊',
96 GlagoliticSupplement::CombiningGlagoliticLetterI => '𞀋',
97 GlagoliticSupplement::CombiningGlagoliticLetterDjervi => '𞀌',
98 GlagoliticSupplement::CombiningGlagoliticLetterKako => '𞀍',
99 GlagoliticSupplement::CombiningGlagoliticLetterLjudije => '𞀎',
100 GlagoliticSupplement::CombiningGlagoliticLetterMyslite => '𞀏',
101 GlagoliticSupplement::CombiningGlagoliticLetterNashi => '𞀐',
102 GlagoliticSupplement::CombiningGlagoliticLetterOnu => '𞀑',
103 GlagoliticSupplement::CombiningGlagoliticLetterPokoji => '𞀒',
104 GlagoliticSupplement::CombiningGlagoliticLetterRitsi => '𞀓',
105 GlagoliticSupplement::CombiningGlagoliticLetterSlovo => '𞀔',
106 GlagoliticSupplement::CombiningGlagoliticLetterTvrido => '𞀕',
107 GlagoliticSupplement::CombiningGlagoliticLetterUku => '𞀖',
108 GlagoliticSupplement::CombiningGlagoliticLetterFritu => '𞀗',
109 GlagoliticSupplement::CombiningGlagoliticLetterHeru => '𞀘',
110 GlagoliticSupplement::CombiningGlagoliticLetterShta => '𞀛',
111 GlagoliticSupplement::CombiningGlagoliticLetterTsi => '𞀜',
112 GlagoliticSupplement::CombiningGlagoliticLetterChrivi => '𞀝',
113 GlagoliticSupplement::CombiningGlagoliticLetterSha => '𞀞',
114 GlagoliticSupplement::CombiningGlagoliticLetterYeru => '𞀟',
115 GlagoliticSupplement::CombiningGlagoliticLetterYeri => '𞀠',
116 GlagoliticSupplement::CombiningGlagoliticLetterYati => '𞀡',
117 GlagoliticSupplement::CombiningGlagoliticLetterYu => '𞀣',
118 GlagoliticSupplement::CombiningGlagoliticLetterSmallYus => '𞀤',
119 GlagoliticSupplement::CombiningGlagoliticLetterYo => '𞀦',
120 GlagoliticSupplement::CombiningGlagoliticLetterIotatedSmallYus => '𞀧',
121 GlagoliticSupplement::CombiningGlagoliticLetterBigYus => '𞀨',
122 GlagoliticSupplement::CombiningGlagoliticLetterIotatedBigYus => '𞀩',
123 GlagoliticSupplement::CombiningGlagoliticLetterFita => '𞀪',
124 }
125 }
126}
127
128impl std::convert::TryFrom<char> for GlagoliticSupplement {
129 type Error = ();
130 fn try_from(c: char) -> Result<Self, Self::Error> {
131 match c {
132 '𞀀' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterAzu),
133 '𞀁' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterBuky),
134 '𞀂' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterVede),
135 '𞀃' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterGlagoli),
136 '𞀄' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterDobro),
137 '𞀅' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterYestu),
138 '𞀆' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterZhivete),
139 '𞀈' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterZemlja),
140 '𞀉' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterIzhe),
141 '𞀊' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterInitialIzhe),
142 '𞀋' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterI),
143 '𞀌' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterDjervi),
144 '𞀍' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterKako),
145 '𞀎' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterLjudije),
146 '𞀏' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterMyslite),
147 '𞀐' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterNashi),
148 '𞀑' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterOnu),
149 '𞀒' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterPokoji),
150 '𞀓' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterRitsi),
151 '𞀔' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterSlovo),
152 '𞀕' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterTvrido),
153 '𞀖' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterUku),
154 '𞀗' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterFritu),
155 '𞀘' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterHeru),
156 '𞀛' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterShta),
157 '𞀜' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterTsi),
158 '𞀝' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterChrivi),
159 '𞀞' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterSha),
160 '𞀟' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterYeru),
161 '𞀠' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterYeri),
162 '𞀡' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterYati),
163 '𞀣' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterYu),
164 '𞀤' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterSmallYus),
165 '𞀦' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterYo),
166 '𞀧' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterIotatedSmallYus),
167 '𞀨' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterBigYus),
168 '𞀩' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterIotatedBigYus),
169 '𞀪' => Ok(GlagoliticSupplement::CombiningGlagoliticLetterFita),
170 _ => Err(()),
171 }
172 }
173}
174
175impl Into<u32> for GlagoliticSupplement {
176 fn into(self) -> u32 {
177 let c: char = self.into();
178 let hex = c
179 .escape_unicode()
180 .to_string()
181 .replace("\\u{", "")
182 .replace("}", "");
183 u32::from_str_radix(&hex, 16).unwrap()
184 }
185}
186
187impl std::convert::TryFrom<u32> for GlagoliticSupplement {
188 type Error = ();
189 fn try_from(u: u32) -> Result<Self, Self::Error> {
190 if let Ok(c) = char::try_from(u) {
191 Self::try_from(c)
192 } else {
193 Err(())
194 }
195 }
196}
197
198impl Iterator for GlagoliticSupplement {
199 type Item = Self;
200 fn next(&mut self) -> Option<Self> {
201 let index: u32 = (*self).into();
202 use std::convert::TryFrom;
203 Self::try_from(index + 1).ok()
204 }
205}
206
207impl GlagoliticSupplement {
208 pub fn new() -> Self {
210 GlagoliticSupplement::CombiningGlagoliticLetterAzu
211 }
212
213 pub fn name(&self) -> String {
215 let s = std::format!("GlagoliticSupplement{:#?}", self);
216 string_morph::to_sentence_case(&s)
217 }
218}