unicode_types/generated/
tags.rs

1
2/// An enum to represent all characters in the Tags block.
3#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum Tags {
5    /// \u{e0001}: '󠀁'
6    LanguageTag,
7    /// \u{e0020}: '󠀠'
8    TagSpace,
9    /// \u{e0021}: '󠀡'
10    TagExclamationMark,
11    /// \u{e0022}: '󠀢'
12    TagQuotationMark,
13    /// \u{e0023}: '󠀣'
14    TagNumberSign,
15    /// \u{e0024}: '󠀤'
16    TagDollarSign,
17    /// \u{e0025}: '󠀥'
18    TagPercentSign,
19    /// \u{e0026}: '󠀦'
20    TagAmpersand,
21    /// \u{e0027}: '󠀧'
22    TagApostrophe,
23    /// \u{e0028}: '󠀨'
24    TagLeftParenthesis,
25    /// \u{e0029}: '󠀩'
26    TagRightParenthesis,
27    /// \u{e002a}: '󠀪'
28    TagAsterisk,
29    /// \u{e002b}: '󠀫'
30    TagPlusSign,
31    /// \u{e002c}: '󠀬'
32    TagComma,
33    /// \u{e002d}: '󠀭'
34    TagHyphenDashMinus,
35    /// \u{e002e}: '󠀮'
36    TagFullStop,
37    /// \u{e002f}: '󠀯'
38    TagSolidus,
39    /// \u{e0030}: '󠀰'
40    TagDigitZero,
41    /// \u{e0031}: '󠀱'
42    TagDigitOne,
43    /// \u{e0032}: '󠀲'
44    TagDigitTwo,
45    /// \u{e0033}: '󠀳'
46    TagDigitThree,
47    /// \u{e0034}: '󠀴'
48    TagDigitFour,
49    /// \u{e0035}: '󠀵'
50    TagDigitFive,
51    /// \u{e0036}: '󠀶'
52    TagDigitSix,
53    /// \u{e0037}: '󠀷'
54    TagDigitSeven,
55    /// \u{e0038}: '󠀸'
56    TagDigitEight,
57    /// \u{e0039}: '󠀹'
58    TagDigitNine,
59    /// \u{e003a}: '󠀺'
60    TagColon,
61    /// \u{e003b}: '󠀻'
62    TagSemicolon,
63    /// \u{e003c}: '󠀼'
64    TagLessDashThanSign,
65    /// \u{e003d}: '󠀽'
66    TagEqualsSign,
67    /// \u{e003e}: '󠀾'
68    TagGreaterDashThanSign,
69    /// \u{e003f}: '󠀿'
70    TagQuestionMark,
71    /// \u{e0040}: '󠁀'
72    TagCommercialAt,
73    /// \u{e0041}: '󠁁'
74    TagLatinCapitalLetterA,
75    /// \u{e0042}: '󠁂'
76    TagLatinCapitalLetterB,
77    /// \u{e0043}: '󠁃'
78    TagLatinCapitalLetterC,
79    /// \u{e0044}: '󠁄'
80    TagLatinCapitalLetterD,
81    /// \u{e0045}: '󠁅'
82    TagLatinCapitalLetterE,
83    /// \u{e0046}: '󠁆'
84    TagLatinCapitalLetterF,
85    /// \u{e0047}: '󠁇'
86    TagLatinCapitalLetterG,
87    /// \u{e0048}: '󠁈'
88    TagLatinCapitalLetterH,
89    /// \u{e0049}: '󠁉'
90    TagLatinCapitalLetterI,
91    /// \u{e004a}: '󠁊'
92    TagLatinCapitalLetterJ,
93    /// \u{e004b}: '󠁋'
94    TagLatinCapitalLetterK,
95    /// \u{e004c}: '󠁌'
96    TagLatinCapitalLetterL,
97    /// \u{e004d}: '󠁍'
98    TagLatinCapitalLetterM,
99    /// \u{e004e}: '󠁎'
100    TagLatinCapitalLetterN,
101    /// \u{e004f}: '󠁏'
102    TagLatinCapitalLetterO,
103    /// \u{e0050}: '󠁐'
104    TagLatinCapitalLetterP,
105    /// \u{e0051}: '󠁑'
106    TagLatinCapitalLetterQ,
107    /// \u{e0052}: '󠁒'
108    TagLatinCapitalLetterR,
109    /// \u{e0053}: '󠁓'
110    TagLatinCapitalLetterS,
111    /// \u{e0054}: '󠁔'
112    TagLatinCapitalLetterT,
113    /// \u{e0055}: '󠁕'
114    TagLatinCapitalLetterU,
115    /// \u{e0056}: '󠁖'
116    TagLatinCapitalLetterV,
117    /// \u{e0057}: '󠁗'
118    TagLatinCapitalLetterW,
119    /// \u{e0058}: '󠁘'
120    TagLatinCapitalLetterX,
121    /// \u{e0059}: '󠁙'
122    TagLatinCapitalLetterY,
123    /// \u{e005a}: '󠁚'
124    TagLatinCapitalLetterZ,
125    /// \u{e005b}: '󠁛'
126    TagLeftSquareBracket,
127    /// \u{e005c}: '󠁜'
128    TagReverseSolidus,
129    /// \u{e005d}: '󠁝'
130    TagRightSquareBracket,
131    /// \u{e005e}: '󠁞'
132    TagCircumflexAccent,
133    /// \u{e005f}: '󠁟'
134    TagLowLine,
135    /// \u{e0060}: '󠁠'
136    TagGraveAccent,
137    /// \u{e0061}: '󠁡'
138    TagLatinSmallLetterA,
139    /// \u{e0062}: '󠁢'
140    TagLatinSmallLetterB,
141    /// \u{e0063}: '󠁣'
142    TagLatinSmallLetterC,
143    /// \u{e0064}: '󠁤'
144    TagLatinSmallLetterD,
145    /// \u{e0065}: '󠁥'
146    TagLatinSmallLetterE,
147    /// \u{e0066}: '󠁦'
148    TagLatinSmallLetterF,
149    /// \u{e0067}: '󠁧'
150    TagLatinSmallLetterG,
151    /// \u{e0068}: '󠁨'
152    TagLatinSmallLetterH,
153    /// \u{e0069}: '󠁩'
154    TagLatinSmallLetterI,
155    /// \u{e006a}: '󠁪'
156    TagLatinSmallLetterJ,
157    /// \u{e006b}: '󠁫'
158    TagLatinSmallLetterK,
159    /// \u{e006c}: '󠁬'
160    TagLatinSmallLetterL,
161    /// \u{e006d}: '󠁭'
162    TagLatinSmallLetterM,
163    /// \u{e006e}: '󠁮'
164    TagLatinSmallLetterN,
165    /// \u{e006f}: '󠁯'
166    TagLatinSmallLetterO,
167    /// \u{e0070}: '󠁰'
168    TagLatinSmallLetterP,
169    /// \u{e0071}: '󠁱'
170    TagLatinSmallLetterQ,
171    /// \u{e0072}: '󠁲'
172    TagLatinSmallLetterR,
173    /// \u{e0073}: '󠁳'
174    TagLatinSmallLetterS,
175    /// \u{e0074}: '󠁴'
176    TagLatinSmallLetterT,
177    /// \u{e0075}: '󠁵'
178    TagLatinSmallLetterU,
179    /// \u{e0076}: '󠁶'
180    TagLatinSmallLetterV,
181    /// \u{e0077}: '󠁷'
182    TagLatinSmallLetterW,
183    /// \u{e0078}: '󠁸'
184    TagLatinSmallLetterX,
185    /// \u{e0079}: '󠁹'
186    TagLatinSmallLetterY,
187    /// \u{e007a}: '󠁺'
188    TagLatinSmallLetterZ,
189    /// \u{e007b}: '󠁻'
190    TagLeftCurlyBracket,
191    /// \u{e007c}: '󠁼'
192    TagVerticalLine,
193    /// \u{e007d}: '󠁽'
194    TagRightCurlyBracket,
195    /// \u{e007e}: '󠁾'
196    TagTilde,
197}
198
199impl Into<char> for Tags {
200    fn into(self) -> char {
201        match self {
202            Tags::LanguageTag => '󠀁',
203            Tags::TagSpace => '󠀠',
204            Tags::TagExclamationMark => '󠀡',
205            Tags::TagQuotationMark => '󠀢',
206            Tags::TagNumberSign => '󠀣',
207            Tags::TagDollarSign => '󠀤',
208            Tags::TagPercentSign => '󠀥',
209            Tags::TagAmpersand => '󠀦',
210            Tags::TagApostrophe => '󠀧',
211            Tags::TagLeftParenthesis => '󠀨',
212            Tags::TagRightParenthesis => '󠀩',
213            Tags::TagAsterisk => '󠀪',
214            Tags::TagPlusSign => '󠀫',
215            Tags::TagComma => '󠀬',
216            Tags::TagHyphenDashMinus => '󠀭',
217            Tags::TagFullStop => '󠀮',
218            Tags::TagSolidus => '󠀯',
219            Tags::TagDigitZero => '󠀰',
220            Tags::TagDigitOne => '󠀱',
221            Tags::TagDigitTwo => '󠀲',
222            Tags::TagDigitThree => '󠀳',
223            Tags::TagDigitFour => '󠀴',
224            Tags::TagDigitFive => '󠀵',
225            Tags::TagDigitSix => '󠀶',
226            Tags::TagDigitSeven => '󠀷',
227            Tags::TagDigitEight => '󠀸',
228            Tags::TagDigitNine => '󠀹',
229            Tags::TagColon => '󠀺',
230            Tags::TagSemicolon => '󠀻',
231            Tags::TagLessDashThanSign => '󠀼',
232            Tags::TagEqualsSign => '󠀽',
233            Tags::TagGreaterDashThanSign => '󠀾',
234            Tags::TagQuestionMark => '󠀿',
235            Tags::TagCommercialAt => '󠁀',
236            Tags::TagLatinCapitalLetterA => '󠁁',
237            Tags::TagLatinCapitalLetterB => '󠁂',
238            Tags::TagLatinCapitalLetterC => '󠁃',
239            Tags::TagLatinCapitalLetterD => '󠁄',
240            Tags::TagLatinCapitalLetterE => '󠁅',
241            Tags::TagLatinCapitalLetterF => '󠁆',
242            Tags::TagLatinCapitalLetterG => '󠁇',
243            Tags::TagLatinCapitalLetterH => '󠁈',
244            Tags::TagLatinCapitalLetterI => '󠁉',
245            Tags::TagLatinCapitalLetterJ => '󠁊',
246            Tags::TagLatinCapitalLetterK => '󠁋',
247            Tags::TagLatinCapitalLetterL => '󠁌',
248            Tags::TagLatinCapitalLetterM => '󠁍',
249            Tags::TagLatinCapitalLetterN => '󠁎',
250            Tags::TagLatinCapitalLetterO => '󠁏',
251            Tags::TagLatinCapitalLetterP => '󠁐',
252            Tags::TagLatinCapitalLetterQ => '󠁑',
253            Tags::TagLatinCapitalLetterR => '󠁒',
254            Tags::TagLatinCapitalLetterS => '󠁓',
255            Tags::TagLatinCapitalLetterT => '󠁔',
256            Tags::TagLatinCapitalLetterU => '󠁕',
257            Tags::TagLatinCapitalLetterV => '󠁖',
258            Tags::TagLatinCapitalLetterW => '󠁗',
259            Tags::TagLatinCapitalLetterX => '󠁘',
260            Tags::TagLatinCapitalLetterY => '󠁙',
261            Tags::TagLatinCapitalLetterZ => '󠁚',
262            Tags::TagLeftSquareBracket => '󠁛',
263            Tags::TagReverseSolidus => '󠁜',
264            Tags::TagRightSquareBracket => '󠁝',
265            Tags::TagCircumflexAccent => '󠁞',
266            Tags::TagLowLine => '󠁟',
267            Tags::TagGraveAccent => '󠁠',
268            Tags::TagLatinSmallLetterA => '󠁡',
269            Tags::TagLatinSmallLetterB => '󠁢',
270            Tags::TagLatinSmallLetterC => '󠁣',
271            Tags::TagLatinSmallLetterD => '󠁤',
272            Tags::TagLatinSmallLetterE => '󠁥',
273            Tags::TagLatinSmallLetterF => '󠁦',
274            Tags::TagLatinSmallLetterG => '󠁧',
275            Tags::TagLatinSmallLetterH => '󠁨',
276            Tags::TagLatinSmallLetterI => '󠁩',
277            Tags::TagLatinSmallLetterJ => '󠁪',
278            Tags::TagLatinSmallLetterK => '󠁫',
279            Tags::TagLatinSmallLetterL => '󠁬',
280            Tags::TagLatinSmallLetterM => '󠁭',
281            Tags::TagLatinSmallLetterN => '󠁮',
282            Tags::TagLatinSmallLetterO => '󠁯',
283            Tags::TagLatinSmallLetterP => '󠁰',
284            Tags::TagLatinSmallLetterQ => '󠁱',
285            Tags::TagLatinSmallLetterR => '󠁲',
286            Tags::TagLatinSmallLetterS => '󠁳',
287            Tags::TagLatinSmallLetterT => '󠁴',
288            Tags::TagLatinSmallLetterU => '󠁵',
289            Tags::TagLatinSmallLetterV => '󠁶',
290            Tags::TagLatinSmallLetterW => '󠁷',
291            Tags::TagLatinSmallLetterX => '󠁸',
292            Tags::TagLatinSmallLetterY => '󠁹',
293            Tags::TagLatinSmallLetterZ => '󠁺',
294            Tags::TagLeftCurlyBracket => '󠁻',
295            Tags::TagVerticalLine => '󠁼',
296            Tags::TagRightCurlyBracket => '󠁽',
297            Tags::TagTilde => '󠁾',
298        }
299    }
300}
301
302impl std::convert::TryFrom<char> for Tags {
303    type Error = ();
304    fn try_from(c: char) -> Result<Self, Self::Error> {
305        match c {
306            '󠀁' => Ok(Tags::LanguageTag),
307            '󠀠' => Ok(Tags::TagSpace),
308            '󠀡' => Ok(Tags::TagExclamationMark),
309            '󠀢' => Ok(Tags::TagQuotationMark),
310            '󠀣' => Ok(Tags::TagNumberSign),
311            '󠀤' => Ok(Tags::TagDollarSign),
312            '󠀥' => Ok(Tags::TagPercentSign),
313            '󠀦' => Ok(Tags::TagAmpersand),
314            '󠀧' => Ok(Tags::TagApostrophe),
315            '󠀨' => Ok(Tags::TagLeftParenthesis),
316            '󠀩' => Ok(Tags::TagRightParenthesis),
317            '󠀪' => Ok(Tags::TagAsterisk),
318            '󠀫' => Ok(Tags::TagPlusSign),
319            '󠀬' => Ok(Tags::TagComma),
320            '󠀭' => Ok(Tags::TagHyphenDashMinus),
321            '󠀮' => Ok(Tags::TagFullStop),
322            '󠀯' => Ok(Tags::TagSolidus),
323            '󠀰' => Ok(Tags::TagDigitZero),
324            '󠀱' => Ok(Tags::TagDigitOne),
325            '󠀲' => Ok(Tags::TagDigitTwo),
326            '󠀳' => Ok(Tags::TagDigitThree),
327            '󠀴' => Ok(Tags::TagDigitFour),
328            '󠀵' => Ok(Tags::TagDigitFive),
329            '󠀶' => Ok(Tags::TagDigitSix),
330            '󠀷' => Ok(Tags::TagDigitSeven),
331            '󠀸' => Ok(Tags::TagDigitEight),
332            '󠀹' => Ok(Tags::TagDigitNine),
333            '󠀺' => Ok(Tags::TagColon),
334            '󠀻' => Ok(Tags::TagSemicolon),
335            '󠀼' => Ok(Tags::TagLessDashThanSign),
336            '󠀽' => Ok(Tags::TagEqualsSign),
337            '󠀾' => Ok(Tags::TagGreaterDashThanSign),
338            '󠀿' => Ok(Tags::TagQuestionMark),
339            '󠁀' => Ok(Tags::TagCommercialAt),
340            '󠁁' => Ok(Tags::TagLatinCapitalLetterA),
341            '󠁂' => Ok(Tags::TagLatinCapitalLetterB),
342            '󠁃' => Ok(Tags::TagLatinCapitalLetterC),
343            '󠁄' => Ok(Tags::TagLatinCapitalLetterD),
344            '󠁅' => Ok(Tags::TagLatinCapitalLetterE),
345            '󠁆' => Ok(Tags::TagLatinCapitalLetterF),
346            '󠁇' => Ok(Tags::TagLatinCapitalLetterG),
347            '󠁈' => Ok(Tags::TagLatinCapitalLetterH),
348            '󠁉' => Ok(Tags::TagLatinCapitalLetterI),
349            '󠁊' => Ok(Tags::TagLatinCapitalLetterJ),
350            '󠁋' => Ok(Tags::TagLatinCapitalLetterK),
351            '󠁌' => Ok(Tags::TagLatinCapitalLetterL),
352            '󠁍' => Ok(Tags::TagLatinCapitalLetterM),
353            '󠁎' => Ok(Tags::TagLatinCapitalLetterN),
354            '󠁏' => Ok(Tags::TagLatinCapitalLetterO),
355            '󠁐' => Ok(Tags::TagLatinCapitalLetterP),
356            '󠁑' => Ok(Tags::TagLatinCapitalLetterQ),
357            '󠁒' => Ok(Tags::TagLatinCapitalLetterR),
358            '󠁓' => Ok(Tags::TagLatinCapitalLetterS),
359            '󠁔' => Ok(Tags::TagLatinCapitalLetterT),
360            '󠁕' => Ok(Tags::TagLatinCapitalLetterU),
361            '󠁖' => Ok(Tags::TagLatinCapitalLetterV),
362            '󠁗' => Ok(Tags::TagLatinCapitalLetterW),
363            '󠁘' => Ok(Tags::TagLatinCapitalLetterX),
364            '󠁙' => Ok(Tags::TagLatinCapitalLetterY),
365            '󠁚' => Ok(Tags::TagLatinCapitalLetterZ),
366            '󠁛' => Ok(Tags::TagLeftSquareBracket),
367            '󠁜' => Ok(Tags::TagReverseSolidus),
368            '󠁝' => Ok(Tags::TagRightSquareBracket),
369            '󠁞' => Ok(Tags::TagCircumflexAccent),
370            '󠁟' => Ok(Tags::TagLowLine),
371            '󠁠' => Ok(Tags::TagGraveAccent),
372            '󠁡' => Ok(Tags::TagLatinSmallLetterA),
373            '󠁢' => Ok(Tags::TagLatinSmallLetterB),
374            '󠁣' => Ok(Tags::TagLatinSmallLetterC),
375            '󠁤' => Ok(Tags::TagLatinSmallLetterD),
376            '󠁥' => Ok(Tags::TagLatinSmallLetterE),
377            '󠁦' => Ok(Tags::TagLatinSmallLetterF),
378            '󠁧' => Ok(Tags::TagLatinSmallLetterG),
379            '󠁨' => Ok(Tags::TagLatinSmallLetterH),
380            '󠁩' => Ok(Tags::TagLatinSmallLetterI),
381            '󠁪' => Ok(Tags::TagLatinSmallLetterJ),
382            '󠁫' => Ok(Tags::TagLatinSmallLetterK),
383            '󠁬' => Ok(Tags::TagLatinSmallLetterL),
384            '󠁭' => Ok(Tags::TagLatinSmallLetterM),
385            '󠁮' => Ok(Tags::TagLatinSmallLetterN),
386            '󠁯' => Ok(Tags::TagLatinSmallLetterO),
387            '󠁰' => Ok(Tags::TagLatinSmallLetterP),
388            '󠁱' => Ok(Tags::TagLatinSmallLetterQ),
389            '󠁲' => Ok(Tags::TagLatinSmallLetterR),
390            '󠁳' => Ok(Tags::TagLatinSmallLetterS),
391            '󠁴' => Ok(Tags::TagLatinSmallLetterT),
392            '󠁵' => Ok(Tags::TagLatinSmallLetterU),
393            '󠁶' => Ok(Tags::TagLatinSmallLetterV),
394            '󠁷' => Ok(Tags::TagLatinSmallLetterW),
395            '󠁸' => Ok(Tags::TagLatinSmallLetterX),
396            '󠁹' => Ok(Tags::TagLatinSmallLetterY),
397            '󠁺' => Ok(Tags::TagLatinSmallLetterZ),
398            '󠁻' => Ok(Tags::TagLeftCurlyBracket),
399            '󠁼' => Ok(Tags::TagVerticalLine),
400            '󠁽' => Ok(Tags::TagRightCurlyBracket),
401            '󠁾' => Ok(Tags::TagTilde),
402            _ => Err(()),
403        }
404    }
405}
406
407impl Into<u32> for Tags {
408    fn into(self) -> u32 {
409        let c: char = self.into();
410        let hex = c
411            .escape_unicode()
412            .to_string()
413            .replace("\\u{", "")
414            .replace("}", "");
415        u32::from_str_radix(&hex, 16).unwrap()
416    }
417}
418
419impl std::convert::TryFrom<u32> for Tags {
420    type Error = ();
421    fn try_from(u: u32) -> Result<Self, Self::Error> {
422        if let Ok(c) = char::try_from(u) {
423            Self::try_from(c)
424        } else {
425            Err(())
426        }
427    }
428}
429
430impl Iterator for Tags {
431    type Item = Self;
432    fn next(&mut self) -> Option<Self> {
433        let index: u32 = (*self).into();
434        use std::convert::TryFrom;
435        Self::try_from(index + 1).ok()
436    }
437}
438
439impl Tags {
440    /// The character with the lowest index in this unicode block
441    pub fn new() -> Self {
442        Tags::LanguageTag
443    }
444
445    /// The character's name, in sentence case
446    pub fn name(&self) -> String {
447        let s = std::format!("Tags{:#?}", self);
448        string_morph::to_sentence_case(&s)
449    }
450}