unicode_types/generated/
batak.rs

1
2/// An enum to represent all characters in the Batak block.
3#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum Batak {
5    /// \u{1bc0}: 'ᯀ'
6    LetterA,
7    /// \u{1bc1}: 'ᯁ'
8    LetterSimalungunA,
9    /// \u{1bc2}: 'ᯂ'
10    LetterHa,
11    /// \u{1bc3}: 'ᯃ'
12    LetterSimalungunHa,
13    /// \u{1bc4}: 'ᯄ'
14    LetterMandailingHa,
15    /// \u{1bc5}: 'ᯅ'
16    LetterBa,
17    /// \u{1bc6}: 'ᯆ'
18    LetterKaroBa,
19    /// \u{1bc7}: 'ᯇ'
20    LetterPa,
21    /// \u{1bc8}: 'ᯈ'
22    LetterSimalungunPa,
23    /// \u{1bc9}: 'ᯉ'
24    LetterNa,
25    /// \u{1bca}: 'ᯊ'
26    LetterMandailingNa,
27    /// \u{1bcb}: 'ᯋ'
28    LetterWa,
29    /// \u{1bcc}: 'ᯌ'
30    LetterSimalungunWa,
31    /// \u{1bcd}: 'ᯍ'
32    LetterPakpakWa,
33    /// \u{1bce}: 'ᯎ'
34    LetterGa,
35    /// \u{1bcf}: 'ᯏ'
36    LetterSimalungunGa,
37    /// \u{1bd0}: 'ᯐ'
38    LetterJa,
39    /// \u{1bd1}: 'ᯑ'
40    LetterDa,
41    /// \u{1bd2}: 'ᯒ'
42    LetterRa,
43    /// \u{1bd3}: 'ᯓ'
44    LetterSimalungunRa,
45    /// \u{1bd4}: 'ᯔ'
46    LetterMa,
47    /// \u{1bd5}: 'ᯕ'
48    LetterSimalungunMa,
49    /// \u{1bd6}: 'ᯖ'
50    LetterSouthernTa,
51    /// \u{1bd7}: 'ᯗ'
52    LetterNorthernTa,
53    /// \u{1bd8}: 'ᯘ'
54    LetterSa,
55    /// \u{1bd9}: 'ᯙ'
56    LetterSimalungunSa,
57    /// \u{1bda}: 'ᯚ'
58    LetterMandailingSa,
59    /// \u{1bdb}: 'ᯛ'
60    LetterYa,
61    /// \u{1bdc}: 'ᯜ'
62    LetterSimalungunYa,
63    /// \u{1bdd}: 'ᯝ'
64    LetterNga,
65    /// \u{1bde}: 'ᯞ'
66    LetterLa,
67    /// \u{1bdf}: 'ᯟ'
68    LetterSimalungunLa,
69    /// \u{1be0}: 'ᯠ'
70    LetterNya,
71    /// \u{1be1}: 'ᯡ'
72    LetterCa,
73    /// \u{1be2}: 'ᯢ'
74    LetterNda,
75    /// \u{1be3}: 'ᯣ'
76    LetterMba,
77    /// \u{1be4}: 'ᯤ'
78    LetterI,
79    /// \u{1be5}: 'ᯥ'
80    LetterU,
81    /// \u{1be6}: '᯦'
82    SignTompi,
83    /// \u{1be7}: 'ᯧ'
84    VowelSignE,
85    /// \u{1be8}: 'ᯨ'
86    VowelSignPakpakE,
87    /// \u{1be9}: 'ᯩ'
88    VowelSignEe,
89    /// \u{1bea}: 'ᯪ'
90    VowelSignI,
91    /// \u{1beb}: 'ᯫ'
92    VowelSignKaroI,
93    /// \u{1bec}: 'ᯬ'
94    VowelSignO,
95    /// \u{1bed}: 'ᯭ'
96    VowelSignKaroO,
97    /// \u{1bee}: 'ᯮ'
98    VowelSignU,
99    /// \u{1bef}: 'ᯯ'
100    VowelSignUForSimalungunSa,
101    /// \u{1bf0}: 'ᯰ'
102    ConsonantSignNg,
103    /// \u{1bf1}: 'ᯱ'
104    ConsonantSignH,
105    /// \u{1bf2}: '᯲'
106    Pangolat,
107    /// \u{1bf3}: '᯳'
108    Panongonan,
109    /// \u{1bfc}: '᯼'
110    SymbolBinduNaMetek,
111    /// \u{1bfd}: '᯽'
112    SymbolBinduPinarboras,
113    /// \u{1bfe}: '᯾'
114    SymbolBinduJudul,
115}
116
117impl Into<char> for Batak {
118    fn into(self) -> char {
119        match self {
120            Batak::LetterA => 'ᯀ',
121            Batak::LetterSimalungunA => 'ᯁ',
122            Batak::LetterHa => 'ᯂ',
123            Batak::LetterSimalungunHa => 'ᯃ',
124            Batak::LetterMandailingHa => 'ᯄ',
125            Batak::LetterBa => 'ᯅ',
126            Batak::LetterKaroBa => 'ᯆ',
127            Batak::LetterPa => 'ᯇ',
128            Batak::LetterSimalungunPa => 'ᯈ',
129            Batak::LetterNa => 'ᯉ',
130            Batak::LetterMandailingNa => 'ᯊ',
131            Batak::LetterWa => 'ᯋ',
132            Batak::LetterSimalungunWa => 'ᯌ',
133            Batak::LetterPakpakWa => 'ᯍ',
134            Batak::LetterGa => 'ᯎ',
135            Batak::LetterSimalungunGa => 'ᯏ',
136            Batak::LetterJa => 'ᯐ',
137            Batak::LetterDa => 'ᯑ',
138            Batak::LetterRa => 'ᯒ',
139            Batak::LetterSimalungunRa => 'ᯓ',
140            Batak::LetterMa => 'ᯔ',
141            Batak::LetterSimalungunMa => 'ᯕ',
142            Batak::LetterSouthernTa => 'ᯖ',
143            Batak::LetterNorthernTa => 'ᯗ',
144            Batak::LetterSa => 'ᯘ',
145            Batak::LetterSimalungunSa => 'ᯙ',
146            Batak::LetterMandailingSa => 'ᯚ',
147            Batak::LetterYa => 'ᯛ',
148            Batak::LetterSimalungunYa => 'ᯜ',
149            Batak::LetterNga => 'ᯝ',
150            Batak::LetterLa => 'ᯞ',
151            Batak::LetterSimalungunLa => 'ᯟ',
152            Batak::LetterNya => 'ᯠ',
153            Batak::LetterCa => 'ᯡ',
154            Batak::LetterNda => 'ᯢ',
155            Batak::LetterMba => 'ᯣ',
156            Batak::LetterI => 'ᯤ',
157            Batak::LetterU => 'ᯥ',
158            Batak::SignTompi => '᯦',
159            Batak::VowelSignE => 'ᯧ',
160            Batak::VowelSignPakpakE => 'ᯨ',
161            Batak::VowelSignEe => 'ᯩ',
162            Batak::VowelSignI => 'ᯪ',
163            Batak::VowelSignKaroI => 'ᯫ',
164            Batak::VowelSignO => 'ᯬ',
165            Batak::VowelSignKaroO => 'ᯭ',
166            Batak::VowelSignU => 'ᯮ',
167            Batak::VowelSignUForSimalungunSa => 'ᯯ',
168            Batak::ConsonantSignNg => 'ᯰ',
169            Batak::ConsonantSignH => 'ᯱ',
170            Batak::Pangolat => '᯲',
171            Batak::Panongonan => '᯳',
172            Batak::SymbolBinduNaMetek => '᯼',
173            Batak::SymbolBinduPinarboras => '᯽',
174            Batak::SymbolBinduJudul => '᯾',
175        }
176    }
177}
178
179impl std::convert::TryFrom<char> for Batak {
180    type Error = ();
181    fn try_from(c: char) -> Result<Self, Self::Error> {
182        match c {
183            'ᯀ' => Ok(Batak::LetterA),
184            'ᯁ' => Ok(Batak::LetterSimalungunA),
185            'ᯂ' => Ok(Batak::LetterHa),
186            'ᯃ' => Ok(Batak::LetterSimalungunHa),
187            'ᯄ' => Ok(Batak::LetterMandailingHa),
188            'ᯅ' => Ok(Batak::LetterBa),
189            'ᯆ' => Ok(Batak::LetterKaroBa),
190            'ᯇ' => Ok(Batak::LetterPa),
191            'ᯈ' => Ok(Batak::LetterSimalungunPa),
192            'ᯉ' => Ok(Batak::LetterNa),
193            'ᯊ' => Ok(Batak::LetterMandailingNa),
194            'ᯋ' => Ok(Batak::LetterWa),
195            'ᯌ' => Ok(Batak::LetterSimalungunWa),
196            'ᯍ' => Ok(Batak::LetterPakpakWa),
197            'ᯎ' => Ok(Batak::LetterGa),
198            'ᯏ' => Ok(Batak::LetterSimalungunGa),
199            'ᯐ' => Ok(Batak::LetterJa),
200            'ᯑ' => Ok(Batak::LetterDa),
201            'ᯒ' => Ok(Batak::LetterRa),
202            'ᯓ' => Ok(Batak::LetterSimalungunRa),
203            'ᯔ' => Ok(Batak::LetterMa),
204            'ᯕ' => Ok(Batak::LetterSimalungunMa),
205            'ᯖ' => Ok(Batak::LetterSouthernTa),
206            'ᯗ' => Ok(Batak::LetterNorthernTa),
207            'ᯘ' => Ok(Batak::LetterSa),
208            'ᯙ' => Ok(Batak::LetterSimalungunSa),
209            'ᯚ' => Ok(Batak::LetterMandailingSa),
210            'ᯛ' => Ok(Batak::LetterYa),
211            'ᯜ' => Ok(Batak::LetterSimalungunYa),
212            'ᯝ' => Ok(Batak::LetterNga),
213            'ᯞ' => Ok(Batak::LetterLa),
214            'ᯟ' => Ok(Batak::LetterSimalungunLa),
215            'ᯠ' => Ok(Batak::LetterNya),
216            'ᯡ' => Ok(Batak::LetterCa),
217            'ᯢ' => Ok(Batak::LetterNda),
218            'ᯣ' => Ok(Batak::LetterMba),
219            'ᯤ' => Ok(Batak::LetterI),
220            'ᯥ' => Ok(Batak::LetterU),
221            '᯦' => Ok(Batak::SignTompi),
222            'ᯧ' => Ok(Batak::VowelSignE),
223            'ᯨ' => Ok(Batak::VowelSignPakpakE),
224            'ᯩ' => Ok(Batak::VowelSignEe),
225            'ᯪ' => Ok(Batak::VowelSignI),
226            'ᯫ' => Ok(Batak::VowelSignKaroI),
227            'ᯬ' => Ok(Batak::VowelSignO),
228            'ᯭ' => Ok(Batak::VowelSignKaroO),
229            'ᯮ' => Ok(Batak::VowelSignU),
230            'ᯯ' => Ok(Batak::VowelSignUForSimalungunSa),
231            'ᯰ' => Ok(Batak::ConsonantSignNg),
232            'ᯱ' => Ok(Batak::ConsonantSignH),
233            '᯲' => Ok(Batak::Pangolat),
234            '᯳' => Ok(Batak::Panongonan),
235            '᯼' => Ok(Batak::SymbolBinduNaMetek),
236            '᯽' => Ok(Batak::SymbolBinduPinarboras),
237            '᯾' => Ok(Batak::SymbolBinduJudul),
238            _ => Err(()),
239        }
240    }
241}
242
243impl Into<u32> for Batak {
244    fn into(self) -> u32 {
245        let c: char = self.into();
246        let hex = c
247            .escape_unicode()
248            .to_string()
249            .replace("\\u{", "")
250            .replace("}", "");
251        u32::from_str_radix(&hex, 16).unwrap()
252    }
253}
254
255impl std::convert::TryFrom<u32> for Batak {
256    type Error = ();
257    fn try_from(u: u32) -> Result<Self, Self::Error> {
258        if let Ok(c) = char::try_from(u) {
259            Self::try_from(c)
260        } else {
261            Err(())
262        }
263    }
264}
265
266impl Iterator for Batak {
267    type Item = Self;
268    fn next(&mut self) -> Option<Self> {
269        let index: u32 = (*self).into();
270        use std::convert::TryFrom;
271        Self::try_from(index + 1).ok()
272    }
273}
274
275impl Batak {
276    /// The character with the lowest index in this unicode block
277    pub fn new() -> Self {
278        Batak::LetterA
279    }
280
281    /// The character's name, in sentence case
282    pub fn name(&self) -> String {
283        let s = std::format!("Batak{:#?}", self);
284        string_morph::to_sentence_case(&s)
285    }
286}