1
2#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum GunjalaGondi {
5 LetterA,
7 LetterAa,
9 LetterI,
11 LetterIi,
13 LetterU,
15 LetterUu,
17 LetterEe,
19 LetterAi,
21 LetterOo,
23 LetterAu,
25 LetterYa,
27 LetterVa,
29 LetterBa,
31 LetterBha,
33 LetterMa,
35 LetterKa,
37 LetterKha,
39 LetterTa,
41 LetterTha,
43 LetterLa,
45 LetterGa,
47 LetterGha,
49 LetterDa,
51 LetterDha,
53 LetterNa,
55 LetterCa,
57 LetterCha,
59 LetterTta,
61 LetterTtha,
63 LetterLla,
65 LetterJa,
67 LetterJha,
69 LetterDda,
71 LetterDdha,
73 LetterNga,
75 LetterPa,
77 LetterPha,
79 LetterHa,
81 LetterRa,
83 LetterSa,
85 VowelSignAa,
87 VowelSignI,
89 VowelSignIi,
91 VowelSignU,
93 VowelSignUu,
95 VowelSignEe,
97 VowelSignAi,
99 VowelSignOo,
101 VowelSignAu,
103 SignAnusvara,
105 SignVisarga,
107 Virama,
109 Om,
111 DigitZero,
113 DigitOne,
115 DigitTwo,
117 DigitThree,
119 DigitFour,
121 DigitFive,
123 DigitSix,
125 DigitSeven,
127 DigitEight,
129 DigitNine,
131}
132
133impl Into<char> for GunjalaGondi {
134 fn into(self) -> char {
135 match self {
136 GunjalaGondi::LetterA => '饝禒',
137 GunjalaGondi::LetterAa => '饝怠',
138 GunjalaGondi::LetterI => '饝耽',
139 GunjalaGondi::LetterIi => '饝担',
140 GunjalaGondi::LetterU => '饝丹',
141 GunjalaGondi::LetterUu => '饝单',
142 GunjalaGondi::LetterEe => '饝掸',
143 GunjalaGondi::LetterAi => '饝胆',
144 GunjalaGondi::LetterOo => '饝氮',
145 GunjalaGondi::LetterAu => '饝但',
146 GunjalaGondi::LetterYa => '饝惮',
147 GunjalaGondi::LetterVa => '饝淡',
148 GunjalaGondi::LetterBa => '饝诞',
149 GunjalaGondi::LetterBha => '饝弹',
150 GunjalaGondi::LetterMa => '饝蛋',
151 GunjalaGondi::LetterKa => '饝当',
152 GunjalaGondi::LetterKha => '饝挡',
153 GunjalaGondi::LetterTa => '饝党',
154 GunjalaGondi::LetterTha => '饝荡',
155 GunjalaGondi::LetterLa => '饝档',
156 GunjalaGondi::LetterGa => '饝刀',
157 GunjalaGondi::LetterGha => '饝捣',
158 GunjalaGondi::LetterDa => '饝蹈',
159 GunjalaGondi::LetterDha => '饝倒',
160 GunjalaGondi::LetterNa => '饝岛',
161 GunjalaGondi::LetterCa => '饝祷',
162 GunjalaGondi::LetterCha => '饝导',
163 GunjalaGondi::LetterTta => '饝到',
164 GunjalaGondi::LetterTtha => '饝稻',
165 GunjalaGondi::LetterLla => '饝悼',
166 GunjalaGondi::LetterJa => '饝秬',
167 GunjalaGondi::LetterJha => '饝秮',
168 GunjalaGondi::LetterDda => '饝秱',
169 GunjalaGondi::LetterDdha => '饝秲',
170 GunjalaGondi::LetterNga => '饝秳',
171 GunjalaGondi::LetterPa => '饝秴',
172 GunjalaGondi::LetterPha => '饝秵',
173 GunjalaGondi::LetterHa => '饝秶',
174 GunjalaGondi::LetterRa => '饝秷',
175 GunjalaGondi::LetterSa => '饝秹',
176 GunjalaGondi::VowelSignAa => '饝秺',
177 GunjalaGondi::VowelSignI => '饝秼',
178 GunjalaGondi::VowelSignIi => '饝秾',
179 GunjalaGondi::VowelSignU => '饝秿',
180 GunjalaGondi::VowelSignUu => '饝稁',
181 GunjalaGondi::VowelSignEe => '饝稅',
182 GunjalaGondi::VowelSignAi => '饝稇',
183 GunjalaGondi::VowelSignOo => '饝稉',
184 GunjalaGondi::VowelSignAu => '饝稊',
185 GunjalaGondi::SignAnusvara => '饝稌',
186 GunjalaGondi::SignVisarga => '饝稏',
187 GunjalaGondi::Virama => '饝稐',
188 GunjalaGondi::Om => '饝稑',
189 GunjalaGondi::DigitZero => '饝稜',
190 GunjalaGondi::DigitOne => '饝丁',
191 GunjalaGondi::DigitTwo => '饝盯',
192 GunjalaGondi::DigitThree => '饝叮',
193 GunjalaGondi::DigitFour => '饝钉',
194 GunjalaGondi::DigitFive => '饝顶',
195 GunjalaGondi::DigitSix => '饝鼎',
196 GunjalaGondi::DigitSeven => '饝锭',
197 GunjalaGondi::DigitEight => '饝定',
198 GunjalaGondi::DigitNine => '饝订',
199 }
200 }
201}
202
203impl std::convert::TryFrom<char> for GunjalaGondi {
204 type Error = ();
205 fn try_from(c: char) -> Result<Self, Self::Error> {
206 match c {
207 '饝禒' => Ok(GunjalaGondi::LetterA),
208 '饝怠' => Ok(GunjalaGondi::LetterAa),
209 '饝耽' => Ok(GunjalaGondi::LetterI),
210 '饝担' => Ok(GunjalaGondi::LetterIi),
211 '饝丹' => Ok(GunjalaGondi::LetterU),
212 '饝单' => Ok(GunjalaGondi::LetterUu),
213 '饝掸' => Ok(GunjalaGondi::LetterEe),
214 '饝胆' => Ok(GunjalaGondi::LetterAi),
215 '饝氮' => Ok(GunjalaGondi::LetterOo),
216 '饝但' => Ok(GunjalaGondi::LetterAu),
217 '饝惮' => Ok(GunjalaGondi::LetterYa),
218 '饝淡' => Ok(GunjalaGondi::LetterVa),
219 '饝诞' => Ok(GunjalaGondi::LetterBa),
220 '饝弹' => Ok(GunjalaGondi::LetterBha),
221 '饝蛋' => Ok(GunjalaGondi::LetterMa),
222 '饝当' => Ok(GunjalaGondi::LetterKa),
223 '饝挡' => Ok(GunjalaGondi::LetterKha),
224 '饝党' => Ok(GunjalaGondi::LetterTa),
225 '饝荡' => Ok(GunjalaGondi::LetterTha),
226 '饝档' => Ok(GunjalaGondi::LetterLa),
227 '饝刀' => Ok(GunjalaGondi::LetterGa),
228 '饝捣' => Ok(GunjalaGondi::LetterGha),
229 '饝蹈' => Ok(GunjalaGondi::LetterDa),
230 '饝倒' => Ok(GunjalaGondi::LetterDha),
231 '饝岛' => Ok(GunjalaGondi::LetterNa),
232 '饝祷' => Ok(GunjalaGondi::LetterCa),
233 '饝导' => Ok(GunjalaGondi::LetterCha),
234 '饝到' => Ok(GunjalaGondi::LetterTta),
235 '饝稻' => Ok(GunjalaGondi::LetterTtha),
236 '饝悼' => Ok(GunjalaGondi::LetterLla),
237 '饝秬' => Ok(GunjalaGondi::LetterJa),
238 '饝秮' => Ok(GunjalaGondi::LetterJha),
239 '饝秱' => Ok(GunjalaGondi::LetterDda),
240 '饝秲' => Ok(GunjalaGondi::LetterDdha),
241 '饝秳' => Ok(GunjalaGondi::LetterNga),
242 '饝秴' => Ok(GunjalaGondi::LetterPa),
243 '饝秵' => Ok(GunjalaGondi::LetterPha),
244 '饝秶' => Ok(GunjalaGondi::LetterHa),
245 '饝秷' => Ok(GunjalaGondi::LetterRa),
246 '饝秹' => Ok(GunjalaGondi::LetterSa),
247 '饝秺' => Ok(GunjalaGondi::VowelSignAa),
248 '饝秼' => Ok(GunjalaGondi::VowelSignI),
249 '饝秾' => Ok(GunjalaGondi::VowelSignIi),
250 '饝秿' => Ok(GunjalaGondi::VowelSignU),
251 '饝稁' => Ok(GunjalaGondi::VowelSignUu),
252 '饝稅' => Ok(GunjalaGondi::VowelSignEe),
253 '饝稇' => Ok(GunjalaGondi::VowelSignAi),
254 '饝稉' => Ok(GunjalaGondi::VowelSignOo),
255 '饝稊' => Ok(GunjalaGondi::VowelSignAu),
256 '饝稌' => Ok(GunjalaGondi::SignAnusvara),
257 '饝稏' => Ok(GunjalaGondi::SignVisarga),
258 '饝稐' => Ok(GunjalaGondi::Virama),
259 '饝稑' => Ok(GunjalaGondi::Om),
260 '饝稜' => Ok(GunjalaGondi::DigitZero),
261 '饝丁' => Ok(GunjalaGondi::DigitOne),
262 '饝盯' => Ok(GunjalaGondi::DigitTwo),
263 '饝叮' => Ok(GunjalaGondi::DigitThree),
264 '饝钉' => Ok(GunjalaGondi::DigitFour),
265 '饝顶' => Ok(GunjalaGondi::DigitFive),
266 '饝鼎' => Ok(GunjalaGondi::DigitSix),
267 '饝锭' => Ok(GunjalaGondi::DigitSeven),
268 '饝定' => Ok(GunjalaGondi::DigitEight),
269 '饝订' => Ok(GunjalaGondi::DigitNine),
270 _ => Err(()),
271 }
272 }
273}
274
275impl Into<u32> for GunjalaGondi {
276 fn into(self) -> u32 {
277 let c: char = self.into();
278 let hex = c
279 .escape_unicode()
280 .to_string()
281 .replace("\\u{", "")
282 .replace("}", "");
283 u32::from_str_radix(&hex, 16).unwrap()
284 }
285}
286
287impl std::convert::TryFrom<u32> for GunjalaGondi {
288 type Error = ();
289 fn try_from(u: u32) -> Result<Self, Self::Error> {
290 if let Ok(c) = char::try_from(u) {
291 Self::try_from(c)
292 } else {
293 Err(())
294 }
295 }
296}
297
298impl Iterator for GunjalaGondi {
299 type Item = Self;
300 fn next(&mut self) -> Option<Self> {
301 let index: u32 = (*self).into();
302 use std::convert::TryFrom;
303 Self::try_from(index + 1).ok()
304 }
305}
306
307impl GunjalaGondi {
308 pub fn new() -> Self {
310 GunjalaGondi::LetterA
311 }
312
313 pub fn name(&self) -> String {
315 let s = std::format!("GunjalaGondi{:#?}", self);
316 string_morph::to_sentence_case(&s)
317 }
318}