unicode_types/generated/
tai_viet.rs

1
2/// An enum to represent all characters in the TaiViet block.
3#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum TaiViet {
5    /// \u{aa80}: 'ꪀ'
6    LetterLowKo,
7    /// \u{aa81}: 'ꪁ'
8    LetterHighKo,
9    /// \u{aa82}: 'ꪂ'
10    LetterLowKho,
11    /// \u{aa83}: 'ꪃ'
12    LetterHighKho,
13    /// \u{aa84}: 'ꪄ'
14    LetterLowKhho,
15    /// \u{aa85}: 'ꪅ'
16    LetterHighKhho,
17    /// \u{aa86}: 'ꪆ'
18    LetterLowGo,
19    /// \u{aa87}: 'ꪇ'
20    LetterHighGo,
21    /// \u{aa88}: 'ꪈ'
22    LetterLowNgo,
23    /// \u{aa89}: 'ꪉ'
24    LetterHighNgo,
25    /// \u{aa8a}: 'ꪊ'
26    LetterLowCo,
27    /// \u{aa8b}: 'ꪋ'
28    LetterHighCo,
29    /// \u{aa8c}: 'ꪌ'
30    LetterLowCho,
31    /// \u{aa8d}: 'ꪍ'
32    LetterHighCho,
33    /// \u{aa8e}: 'ꪎ'
34    LetterLowSo,
35    /// \u{aa8f}: 'ꪏ'
36    LetterHighSo,
37    /// \u{aa90}: 'ꪐ'
38    LetterLowNyo,
39    /// \u{aa91}: 'ꪑ'
40    LetterHighNyo,
41    /// \u{aa92}: 'ꪒ'
42    LetterLowDo,
43    /// \u{aa93}: 'ꪓ'
44    LetterHighDo,
45    /// \u{aa94}: 'ꪔ'
46    LetterLowTo,
47    /// \u{aa95}: 'ꪕ'
48    LetterHighTo,
49    /// \u{aa96}: 'ꪖ'
50    LetterLowTho,
51    /// \u{aa97}: 'ꪗ'
52    LetterHighTho,
53    /// \u{aa98}: 'ꪘ'
54    LetterLowNo,
55    /// \u{aa99}: 'ꪙ'
56    LetterHighNo,
57    /// \u{aa9a}: 'ꪚ'
58    LetterLowBo,
59    /// \u{aa9b}: 'ꪛ'
60    LetterHighBo,
61    /// \u{aa9c}: 'ꪜ'
62    LetterLowPo,
63    /// \u{aa9d}: 'ꪝ'
64    LetterHighPo,
65    /// \u{aa9e}: 'ꪞ'
66    LetterLowPho,
67    /// \u{aa9f}: 'ꪟ'
68    LetterHighPho,
69    /// \u{aaa0}: 'ꪠ'
70    LetterLowFo,
71    /// \u{aaa1}: 'ꪡ'
72    LetterHighFo,
73    /// \u{aaa2}: 'ꪢ'
74    LetterLowMo,
75    /// \u{aaa3}: 'ꪣ'
76    LetterHighMo,
77    /// \u{aaa4}: 'ꪤ'
78    LetterLowYo,
79    /// \u{aaa5}: 'ꪥ'
80    LetterHighYo,
81    /// \u{aaa6}: 'ꪦ'
82    LetterLowRo,
83    /// \u{aaa7}: 'ꪧ'
84    LetterHighRo,
85    /// \u{aaa8}: 'ꪨ'
86    LetterLowLo,
87    /// \u{aaa9}: 'ꪩ'
88    LetterHighLo,
89    /// \u{aaaa}: 'ꪪ'
90    LetterLowVo,
91    /// \u{aaab}: 'ꪫ'
92    LetterHighVo,
93    /// \u{aaac}: 'ꪬ'
94    LetterLowHo,
95    /// \u{aaad}: 'ꪭ'
96    LetterHighHo,
97    /// \u{aaae}: 'ꪮ'
98    LetterLowO,
99    /// \u{aaaf}: 'ꪯ'
100    LetterHighO,
101    /// \u{aab0}: 'ꪰ'
102    MaiKang,
103    /// \u{aab1}: 'ꪱ'
104    VowelAa,
105    /// \u{aab2}: 'ꪲ'
106    VowelI,
107    /// \u{aab3}: 'ꪳ'
108    VowelUe,
109    /// \u{aab4}: 'ꪴ'
110    VowelU,
111    /// \u{aab5}: 'ꪵ'
112    VowelE,
113    /// \u{aab6}: 'ꪶ'
114    VowelO,
115    /// \u{aab7}: 'ꪷ'
116    MaiKhit,
117    /// \u{aab8}: 'ꪸ'
118    VowelIa,
119    /// \u{aab9}: 'ꪹ'
120    VowelUea,
121    /// \u{aaba}: 'ꪺ'
122    VowelUa,
123    /// \u{aabb}: 'ꪻ'
124    VowelAue,
125    /// \u{aabc}: 'ꪼ'
126    VowelAy,
127    /// \u{aabd}: 'ꪽ'
128    VowelAn,
129    /// \u{aabe}: 'ꪾ'
130    VowelAm,
131    /// \u{aabf}: '꪿'
132    ToneMaiEk,
133    /// \u{aac0}: 'ꫀ'
134    ToneMaiNueng,
135    /// \u{aac1}: '꫁'
136    ToneMaiTho,
137    /// \u{aac2}: 'ꫂ'
138    ToneMaiSong,
139    /// \u{aadb}: 'ꫛ'
140    SymbolKon,
141    /// \u{aadc}: 'ꫜ'
142    SymbolNueng,
143    /// \u{aadd}: 'ꫝ'
144    SymbolSam,
145    /// \u{aade}: '꫞'
146    SymbolHoHoi,
147}
148
149impl Into<char> for TaiViet {
150    fn into(self) -> char {
151        match self {
152            TaiViet::LetterLowKo => 'ꪀ',
153            TaiViet::LetterHighKo => 'ꪁ',
154            TaiViet::LetterLowKho => 'ꪂ',
155            TaiViet::LetterHighKho => 'ꪃ',
156            TaiViet::LetterLowKhho => 'ꪄ',
157            TaiViet::LetterHighKhho => 'ꪅ',
158            TaiViet::LetterLowGo => 'ꪆ',
159            TaiViet::LetterHighGo => 'ꪇ',
160            TaiViet::LetterLowNgo => 'ꪈ',
161            TaiViet::LetterHighNgo => 'ꪉ',
162            TaiViet::LetterLowCo => 'ꪊ',
163            TaiViet::LetterHighCo => 'ꪋ',
164            TaiViet::LetterLowCho => 'ꪌ',
165            TaiViet::LetterHighCho => 'ꪍ',
166            TaiViet::LetterLowSo => 'ꪎ',
167            TaiViet::LetterHighSo => 'ꪏ',
168            TaiViet::LetterLowNyo => 'ꪐ',
169            TaiViet::LetterHighNyo => 'ꪑ',
170            TaiViet::LetterLowDo => 'ꪒ',
171            TaiViet::LetterHighDo => 'ꪓ',
172            TaiViet::LetterLowTo => 'ꪔ',
173            TaiViet::LetterHighTo => 'ꪕ',
174            TaiViet::LetterLowTho => 'ꪖ',
175            TaiViet::LetterHighTho => 'ꪗ',
176            TaiViet::LetterLowNo => 'ꪘ',
177            TaiViet::LetterHighNo => 'ꪙ',
178            TaiViet::LetterLowBo => 'ꪚ',
179            TaiViet::LetterHighBo => 'ꪛ',
180            TaiViet::LetterLowPo => 'ꪜ',
181            TaiViet::LetterHighPo => 'ꪝ',
182            TaiViet::LetterLowPho => 'ꪞ',
183            TaiViet::LetterHighPho => 'ꪟ',
184            TaiViet::LetterLowFo => 'ꪠ',
185            TaiViet::LetterHighFo => 'ꪡ',
186            TaiViet::LetterLowMo => 'ꪢ',
187            TaiViet::LetterHighMo => 'ꪣ',
188            TaiViet::LetterLowYo => 'ꪤ',
189            TaiViet::LetterHighYo => 'ꪥ',
190            TaiViet::LetterLowRo => 'ꪦ',
191            TaiViet::LetterHighRo => 'ꪧ',
192            TaiViet::LetterLowLo => 'ꪨ',
193            TaiViet::LetterHighLo => 'ꪩ',
194            TaiViet::LetterLowVo => 'ꪪ',
195            TaiViet::LetterHighVo => 'ꪫ',
196            TaiViet::LetterLowHo => 'ꪬ',
197            TaiViet::LetterHighHo => 'ꪭ',
198            TaiViet::LetterLowO => 'ꪮ',
199            TaiViet::LetterHighO => 'ꪯ',
200            TaiViet::MaiKang => 'ꪰ',
201            TaiViet::VowelAa => 'ꪱ',
202            TaiViet::VowelI => 'ꪲ',
203            TaiViet::VowelUe => 'ꪳ',
204            TaiViet::VowelU => 'ꪴ',
205            TaiViet::VowelE => 'ꪵ',
206            TaiViet::VowelO => 'ꪶ',
207            TaiViet::MaiKhit => 'ꪷ',
208            TaiViet::VowelIa => 'ꪸ',
209            TaiViet::VowelUea => 'ꪹ',
210            TaiViet::VowelUa => 'ꪺ',
211            TaiViet::VowelAue => 'ꪻ',
212            TaiViet::VowelAy => 'ꪼ',
213            TaiViet::VowelAn => 'ꪽ',
214            TaiViet::VowelAm => 'ꪾ',
215            TaiViet::ToneMaiEk => '꪿',
216            TaiViet::ToneMaiNueng => 'ꫀ',
217            TaiViet::ToneMaiTho => '꫁',
218            TaiViet::ToneMaiSong => 'ꫂ',
219            TaiViet::SymbolKon => 'ꫛ',
220            TaiViet::SymbolNueng => 'ꫜ',
221            TaiViet::SymbolSam => 'ꫝ',
222            TaiViet::SymbolHoHoi => '꫞',
223        }
224    }
225}
226
227impl std::convert::TryFrom<char> for TaiViet {
228    type Error = ();
229    fn try_from(c: char) -> Result<Self, Self::Error> {
230        match c {
231            'ꪀ' => Ok(TaiViet::LetterLowKo),
232            'ꪁ' => Ok(TaiViet::LetterHighKo),
233            'ꪂ' => Ok(TaiViet::LetterLowKho),
234            'ꪃ' => Ok(TaiViet::LetterHighKho),
235            'ꪄ' => Ok(TaiViet::LetterLowKhho),
236            'ꪅ' => Ok(TaiViet::LetterHighKhho),
237            'ꪆ' => Ok(TaiViet::LetterLowGo),
238            'ꪇ' => Ok(TaiViet::LetterHighGo),
239            'ꪈ' => Ok(TaiViet::LetterLowNgo),
240            'ꪉ' => Ok(TaiViet::LetterHighNgo),
241            'ꪊ' => Ok(TaiViet::LetterLowCo),
242            'ꪋ' => Ok(TaiViet::LetterHighCo),
243            'ꪌ' => Ok(TaiViet::LetterLowCho),
244            'ꪍ' => Ok(TaiViet::LetterHighCho),
245            'ꪎ' => Ok(TaiViet::LetterLowSo),
246            'ꪏ' => Ok(TaiViet::LetterHighSo),
247            'ꪐ' => Ok(TaiViet::LetterLowNyo),
248            'ꪑ' => Ok(TaiViet::LetterHighNyo),
249            'ꪒ' => Ok(TaiViet::LetterLowDo),
250            'ꪓ' => Ok(TaiViet::LetterHighDo),
251            'ꪔ' => Ok(TaiViet::LetterLowTo),
252            'ꪕ' => Ok(TaiViet::LetterHighTo),
253            'ꪖ' => Ok(TaiViet::LetterLowTho),
254            'ꪗ' => Ok(TaiViet::LetterHighTho),
255            'ꪘ' => Ok(TaiViet::LetterLowNo),
256            'ꪙ' => Ok(TaiViet::LetterHighNo),
257            'ꪚ' => Ok(TaiViet::LetterLowBo),
258            'ꪛ' => Ok(TaiViet::LetterHighBo),
259            'ꪜ' => Ok(TaiViet::LetterLowPo),
260            'ꪝ' => Ok(TaiViet::LetterHighPo),
261            'ꪞ' => Ok(TaiViet::LetterLowPho),
262            'ꪟ' => Ok(TaiViet::LetterHighPho),
263            'ꪠ' => Ok(TaiViet::LetterLowFo),
264            'ꪡ' => Ok(TaiViet::LetterHighFo),
265            'ꪢ' => Ok(TaiViet::LetterLowMo),
266            'ꪣ' => Ok(TaiViet::LetterHighMo),
267            'ꪤ' => Ok(TaiViet::LetterLowYo),
268            'ꪥ' => Ok(TaiViet::LetterHighYo),
269            'ꪦ' => Ok(TaiViet::LetterLowRo),
270            'ꪧ' => Ok(TaiViet::LetterHighRo),
271            'ꪨ' => Ok(TaiViet::LetterLowLo),
272            'ꪩ' => Ok(TaiViet::LetterHighLo),
273            'ꪪ' => Ok(TaiViet::LetterLowVo),
274            'ꪫ' => Ok(TaiViet::LetterHighVo),
275            'ꪬ' => Ok(TaiViet::LetterLowHo),
276            'ꪭ' => Ok(TaiViet::LetterHighHo),
277            'ꪮ' => Ok(TaiViet::LetterLowO),
278            'ꪯ' => Ok(TaiViet::LetterHighO),
279            'ꪰ' => Ok(TaiViet::MaiKang),
280            'ꪱ' => Ok(TaiViet::VowelAa),
281            'ꪲ' => Ok(TaiViet::VowelI),
282            'ꪳ' => Ok(TaiViet::VowelUe),
283            'ꪴ' => Ok(TaiViet::VowelU),
284            'ꪵ' => Ok(TaiViet::VowelE),
285            'ꪶ' => Ok(TaiViet::VowelO),
286            'ꪷ' => Ok(TaiViet::MaiKhit),
287            'ꪸ' => Ok(TaiViet::VowelIa),
288            'ꪹ' => Ok(TaiViet::VowelUea),
289            'ꪺ' => Ok(TaiViet::VowelUa),
290            'ꪻ' => Ok(TaiViet::VowelAue),
291            'ꪼ' => Ok(TaiViet::VowelAy),
292            'ꪽ' => Ok(TaiViet::VowelAn),
293            'ꪾ' => Ok(TaiViet::VowelAm),
294            '꪿' => Ok(TaiViet::ToneMaiEk),
295            'ꫀ' => Ok(TaiViet::ToneMaiNueng),
296            '꫁' => Ok(TaiViet::ToneMaiTho),
297            'ꫂ' => Ok(TaiViet::ToneMaiSong),
298            'ꫛ' => Ok(TaiViet::SymbolKon),
299            'ꫜ' => Ok(TaiViet::SymbolNueng),
300            'ꫝ' => Ok(TaiViet::SymbolSam),
301            '꫞' => Ok(TaiViet::SymbolHoHoi),
302            _ => Err(()),
303        }
304    }
305}
306
307impl Into<u32> for TaiViet {
308    fn into(self) -> u32 {
309        let c: char = self.into();
310        let hex = c
311            .escape_unicode()
312            .to_string()
313            .replace("\\u{", "")
314            .replace("}", "");
315        u32::from_str_radix(&hex, 16).unwrap()
316    }
317}
318
319impl std::convert::TryFrom<u32> for TaiViet {
320    type Error = ();
321    fn try_from(u: u32) -> Result<Self, Self::Error> {
322        if let Ok(c) = char::try_from(u) {
323            Self::try_from(c)
324        } else {
325            Err(())
326        }
327    }
328}
329
330impl Iterator for TaiViet {
331    type Item = Self;
332    fn next(&mut self) -> Option<Self> {
333        let index: u32 = (*self).into();
334        use std::convert::TryFrom;
335        Self::try_from(index + 1).ok()
336    }
337}
338
339impl TaiViet {
340    /// The character with the lowest index in this unicode block
341    pub fn new() -> Self {
342        TaiViet::LetterLowKo
343    }
344
345    /// The character's name, in sentence case
346    pub fn name(&self) -> String {
347        let s = std::format!("TaiViet{:#?}", self);
348        string_morph::to_sentence_case(&s)
349    }
350}