1
2#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum Nandinagari {
5 LetterA,
7 LetterAa,
9 LetterI,
11 LetterIi,
13 LetterU,
15 LetterUu,
17 LetterVocalicR,
19 LetterVocalicRr,
21 LetterE,
23 LetterAi,
25 LetterO,
27 LetterAu,
29 LetterKa,
31 LetterKha,
33 LetterGa,
35 LetterGha,
37 LetterNga,
39 LetterCa,
41 LetterCha,
43 LetterJa,
45 LetterJha,
47 LetterNya,
49 LetterTta,
51 LetterTtha,
53 LetterDda,
55 LetterDdha,
57 LetterNna,
59 LetterTa,
61 LetterTha,
63 LetterDa,
65 LetterDha,
67 LetterNa,
69 LetterPa,
71 LetterPha,
73 LetterBa,
75 LetterBha,
77 LetterMa,
79 LetterYa,
81 LetterRa,
83 LetterLa,
85 LetterVa,
87 LetterSha,
89 LetterSsa,
91 LetterSa,
93 LetterHa,
95 LetterLla,
97 LetterRra,
99 VowelSignAa,
101 VowelSignI,
103 VowelSignIi,
105 VowelSignU,
107 VowelSignUu,
109 VowelSignVocalicR,
111 VowelSignVocalicRr,
113 VowelSignE,
115 VowelSignAi,
117 VowelSignO,
119 VowelSignAu,
121 SignAnusvara,
123 SignVisarga,
125 SignVirama,
127 SignAvagraha,
129 SignSiddham,
131 Headstroke,
133 VowelSignPrishthamatraE,
135}
136
137impl Into<char> for Nandinagari {
138 fn into(self) -> char {
139 match self {
140 Nandinagari::LetterA => '𑦠',
141 Nandinagari::LetterAa => '𑦡',
142 Nandinagari::LetterI => '𑦢',
143 Nandinagari::LetterIi => '𑦣',
144 Nandinagari::LetterU => '𑦤',
145 Nandinagari::LetterUu => '𑦥',
146 Nandinagari::LetterVocalicR => '𑦦',
147 Nandinagari::LetterVocalicRr => '𑦧',
148 Nandinagari::LetterE => '𑦪',
149 Nandinagari::LetterAi => '𑦫',
150 Nandinagari::LetterO => '𑦬',
151 Nandinagari::LetterAu => '𑦭',
152 Nandinagari::LetterKa => '𑦮',
153 Nandinagari::LetterKha => '𑦯',
154 Nandinagari::LetterGa => '𑦰',
155 Nandinagari::LetterGha => '𑦱',
156 Nandinagari::LetterNga => '𑦲',
157 Nandinagari::LetterCa => '𑦳',
158 Nandinagari::LetterCha => '𑦴',
159 Nandinagari::LetterJa => '𑦵',
160 Nandinagari::LetterJha => '𑦶',
161 Nandinagari::LetterNya => '𑦷',
162 Nandinagari::LetterTta => '𑦸',
163 Nandinagari::LetterTtha => '𑦹',
164 Nandinagari::LetterDda => '𑦺',
165 Nandinagari::LetterDdha => '𑦻',
166 Nandinagari::LetterNna => '𑦼',
167 Nandinagari::LetterTa => '𑦽',
168 Nandinagari::LetterTha => '𑦾',
169 Nandinagari::LetterDa => '𑦿',
170 Nandinagari::LetterDha => '𑧀',
171 Nandinagari::LetterNa => '𑧁',
172 Nandinagari::LetterPa => '𑧂',
173 Nandinagari::LetterPha => '𑧃',
174 Nandinagari::LetterBa => '𑧄',
175 Nandinagari::LetterBha => '𑧅',
176 Nandinagari::LetterMa => '𑧆',
177 Nandinagari::LetterYa => '𑧇',
178 Nandinagari::LetterRa => '𑧈',
179 Nandinagari::LetterLa => '𑧉',
180 Nandinagari::LetterVa => '𑧊',
181 Nandinagari::LetterSha => '𑧋',
182 Nandinagari::LetterSsa => '𑧌',
183 Nandinagari::LetterSa => '𑧍',
184 Nandinagari::LetterHa => '𑧎',
185 Nandinagari::LetterLla => '𑧏',
186 Nandinagari::LetterRra => '𑧐',
187 Nandinagari::VowelSignAa => '𑧑',
188 Nandinagari::VowelSignI => '𑧒',
189 Nandinagari::VowelSignIi => '𑧓',
190 Nandinagari::VowelSignU => '𑧔',
191 Nandinagari::VowelSignUu => '𑧕',
192 Nandinagari::VowelSignVocalicR => '𑧖',
193 Nandinagari::VowelSignVocalicRr => '𑧗',
194 Nandinagari::VowelSignE => '𑧚',
195 Nandinagari::VowelSignAi => '𑧛',
196 Nandinagari::VowelSignO => '𑧜',
197 Nandinagari::VowelSignAu => '𑧝',
198 Nandinagari::SignAnusvara => '𑧞',
199 Nandinagari::SignVisarga => '𑧟',
200 Nandinagari::SignVirama => '𑧠',
201 Nandinagari::SignAvagraha => '𑧡',
202 Nandinagari::SignSiddham => '𑧢',
203 Nandinagari::Headstroke => '𑧣',
204 Nandinagari::VowelSignPrishthamatraE => '𑧤',
205 }
206 }
207}
208
209impl std::convert::TryFrom<char> for Nandinagari {
210 type Error = ();
211 fn try_from(c: char) -> Result<Self, Self::Error> {
212 match c {
213 '𑦠' => Ok(Nandinagari::LetterA),
214 '𑦡' => Ok(Nandinagari::LetterAa),
215 '𑦢' => Ok(Nandinagari::LetterI),
216 '𑦣' => Ok(Nandinagari::LetterIi),
217 '𑦤' => Ok(Nandinagari::LetterU),
218 '𑦥' => Ok(Nandinagari::LetterUu),
219 '𑦦' => Ok(Nandinagari::LetterVocalicR),
220 '𑦧' => Ok(Nandinagari::LetterVocalicRr),
221 '𑦪' => Ok(Nandinagari::LetterE),
222 '𑦫' => Ok(Nandinagari::LetterAi),
223 '𑦬' => Ok(Nandinagari::LetterO),
224 '𑦭' => Ok(Nandinagari::LetterAu),
225 '𑦮' => Ok(Nandinagari::LetterKa),
226 '𑦯' => Ok(Nandinagari::LetterKha),
227 '𑦰' => Ok(Nandinagari::LetterGa),
228 '𑦱' => Ok(Nandinagari::LetterGha),
229 '𑦲' => Ok(Nandinagari::LetterNga),
230 '𑦳' => Ok(Nandinagari::LetterCa),
231 '𑦴' => Ok(Nandinagari::LetterCha),
232 '𑦵' => Ok(Nandinagari::LetterJa),
233 '𑦶' => Ok(Nandinagari::LetterJha),
234 '𑦷' => Ok(Nandinagari::LetterNya),
235 '𑦸' => Ok(Nandinagari::LetterTta),
236 '𑦹' => Ok(Nandinagari::LetterTtha),
237 '𑦺' => Ok(Nandinagari::LetterDda),
238 '𑦻' => Ok(Nandinagari::LetterDdha),
239 '𑦼' => Ok(Nandinagari::LetterNna),
240 '𑦽' => Ok(Nandinagari::LetterTa),
241 '𑦾' => Ok(Nandinagari::LetterTha),
242 '𑦿' => Ok(Nandinagari::LetterDa),
243 '𑧀' => Ok(Nandinagari::LetterDha),
244 '𑧁' => Ok(Nandinagari::LetterNa),
245 '𑧂' => Ok(Nandinagari::LetterPa),
246 '𑧃' => Ok(Nandinagari::LetterPha),
247 '𑧄' => Ok(Nandinagari::LetterBa),
248 '𑧅' => Ok(Nandinagari::LetterBha),
249 '𑧆' => Ok(Nandinagari::LetterMa),
250 '𑧇' => Ok(Nandinagari::LetterYa),
251 '𑧈' => Ok(Nandinagari::LetterRa),
252 '𑧉' => Ok(Nandinagari::LetterLa),
253 '𑧊' => Ok(Nandinagari::LetterVa),
254 '𑧋' => Ok(Nandinagari::LetterSha),
255 '𑧌' => Ok(Nandinagari::LetterSsa),
256 '𑧍' => Ok(Nandinagari::LetterSa),
257 '𑧎' => Ok(Nandinagari::LetterHa),
258 '𑧏' => Ok(Nandinagari::LetterLla),
259 '𑧐' => Ok(Nandinagari::LetterRra),
260 '𑧑' => Ok(Nandinagari::VowelSignAa),
261 '𑧒' => Ok(Nandinagari::VowelSignI),
262 '𑧓' => Ok(Nandinagari::VowelSignIi),
263 '𑧔' => Ok(Nandinagari::VowelSignU),
264 '𑧕' => Ok(Nandinagari::VowelSignUu),
265 '𑧖' => Ok(Nandinagari::VowelSignVocalicR),
266 '𑧗' => Ok(Nandinagari::VowelSignVocalicRr),
267 '𑧚' => Ok(Nandinagari::VowelSignE),
268 '𑧛' => Ok(Nandinagari::VowelSignAi),
269 '𑧜' => Ok(Nandinagari::VowelSignO),
270 '𑧝' => Ok(Nandinagari::VowelSignAu),
271 '𑧞' => Ok(Nandinagari::SignAnusvara),
272 '𑧟' => Ok(Nandinagari::SignVisarga),
273 '𑧠' => Ok(Nandinagari::SignVirama),
274 '𑧡' => Ok(Nandinagari::SignAvagraha),
275 '𑧢' => Ok(Nandinagari::SignSiddham),
276 '𑧣' => Ok(Nandinagari::Headstroke),
277 '𑧤' => Ok(Nandinagari::VowelSignPrishthamatraE),
278 _ => Err(()),
279 }
280 }
281}
282
283impl Into<u32> for Nandinagari {
284 fn into(self) -> u32 {
285 let c: char = self.into();
286 let hex = c
287 .escape_unicode()
288 .to_string()
289 .replace("\\u{", "")
290 .replace("}", "");
291 u32::from_str_radix(&hex, 16).unwrap()
292 }
293}
294
295impl std::convert::TryFrom<u32> for Nandinagari {
296 type Error = ();
297 fn try_from(u: u32) -> Result<Self, Self::Error> {
298 if let Ok(c) = char::try_from(u) {
299 Self::try_from(c)
300 } else {
301 Err(())
302 }
303 }
304}
305
306impl Iterator for Nandinagari {
307 type Item = Self;
308 fn next(&mut self) -> Option<Self> {
309 let index: u32 = (*self).into();
310 use std::convert::TryFrom;
311 Self::try_from(index + 1).ok()
312 }
313}
314
315impl Nandinagari {
316 pub fn new() -> Self {
318 Nandinagari::LetterA
319 }
320
321 pub fn name(&self) -> String {
323 let s = std::format!("Nandinagari{:#?}", self);
324 string_morph::to_sentence_case(&s)
325 }
326}