unicode_types/generated/
sinhala_archaic_numbers.rs

1
2/// An enum to represent all characters in the SinhalaArchaicNumbers block.
3#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum SinhalaArchaicNumbers {
5    /// \u{111e1}: '𑇡'
6    SinhalaArchaicDigitOne,
7    /// \u{111e2}: '𑇢'
8    SinhalaArchaicDigitTwo,
9    /// \u{111e3}: '𑇣'
10    SinhalaArchaicDigitThree,
11    /// \u{111e4}: '𑇤'
12    SinhalaArchaicDigitFour,
13    /// \u{111e5}: '𑇥'
14    SinhalaArchaicDigitFive,
15    /// \u{111e6}: '𑇦'
16    SinhalaArchaicDigitSix,
17    /// \u{111e7}: '𑇧'
18    SinhalaArchaicDigitSeven,
19    /// \u{111e8}: '𑇨'
20    SinhalaArchaicDigitEight,
21    /// \u{111e9}: '𑇩'
22    SinhalaArchaicDigitNine,
23    /// \u{111ea}: '𑇪'
24    SinhalaArchaicNumberTen,
25    /// \u{111eb}: '𑇫'
26    SinhalaArchaicNumberTwenty,
27    /// \u{111ec}: '𑇬'
28    SinhalaArchaicNumberThirty,
29    /// \u{111ed}: '𑇭'
30    SinhalaArchaicNumberForty,
31    /// \u{111ee}: '𑇮'
32    SinhalaArchaicNumberFifty,
33    /// \u{111ef}: '𑇯'
34    SinhalaArchaicNumberSixty,
35    /// \u{111f0}: '𑇰'
36    SinhalaArchaicNumberSeventy,
37    /// \u{111f1}: '𑇱'
38    SinhalaArchaicNumberEighty,
39    /// \u{111f2}: '𑇲'
40    SinhalaArchaicNumberNinety,
41    /// \u{111f3}: '𑇳'
42    SinhalaArchaicNumberOneHundred,
43    /// \u{111f4}: '𑇴'
44    SinhalaArchaicNumberOneThousand,
45}
46
47impl Into<char> for SinhalaArchaicNumbers {
48    fn into(self) -> char {
49        match self {
50            SinhalaArchaicNumbers::SinhalaArchaicDigitOne => '𑇡',
51            SinhalaArchaicNumbers::SinhalaArchaicDigitTwo => '𑇢',
52            SinhalaArchaicNumbers::SinhalaArchaicDigitThree => '𑇣',
53            SinhalaArchaicNumbers::SinhalaArchaicDigitFour => '𑇤',
54            SinhalaArchaicNumbers::SinhalaArchaicDigitFive => '𑇥',
55            SinhalaArchaicNumbers::SinhalaArchaicDigitSix => '𑇦',
56            SinhalaArchaicNumbers::SinhalaArchaicDigitSeven => '𑇧',
57            SinhalaArchaicNumbers::SinhalaArchaicDigitEight => '𑇨',
58            SinhalaArchaicNumbers::SinhalaArchaicDigitNine => '𑇩',
59            SinhalaArchaicNumbers::SinhalaArchaicNumberTen => '𑇪',
60            SinhalaArchaicNumbers::SinhalaArchaicNumberTwenty => '𑇫',
61            SinhalaArchaicNumbers::SinhalaArchaicNumberThirty => '𑇬',
62            SinhalaArchaicNumbers::SinhalaArchaicNumberForty => '𑇭',
63            SinhalaArchaicNumbers::SinhalaArchaicNumberFifty => '𑇮',
64            SinhalaArchaicNumbers::SinhalaArchaicNumberSixty => '𑇯',
65            SinhalaArchaicNumbers::SinhalaArchaicNumberSeventy => '𑇰',
66            SinhalaArchaicNumbers::SinhalaArchaicNumberEighty => '𑇱',
67            SinhalaArchaicNumbers::SinhalaArchaicNumberNinety => '𑇲',
68            SinhalaArchaicNumbers::SinhalaArchaicNumberOneHundred => '𑇳',
69            SinhalaArchaicNumbers::SinhalaArchaicNumberOneThousand => '𑇴',
70        }
71    }
72}
73
74impl std::convert::TryFrom<char> for SinhalaArchaicNumbers {
75    type Error = ();
76    fn try_from(c: char) -> Result<Self, Self::Error> {
77        match c {
78            '𑇡' => Ok(SinhalaArchaicNumbers::SinhalaArchaicDigitOne),
79            '𑇢' => Ok(SinhalaArchaicNumbers::SinhalaArchaicDigitTwo),
80            '𑇣' => Ok(SinhalaArchaicNumbers::SinhalaArchaicDigitThree),
81            '𑇤' => Ok(SinhalaArchaicNumbers::SinhalaArchaicDigitFour),
82            '𑇥' => Ok(SinhalaArchaicNumbers::SinhalaArchaicDigitFive),
83            '𑇦' => Ok(SinhalaArchaicNumbers::SinhalaArchaicDigitSix),
84            '𑇧' => Ok(SinhalaArchaicNumbers::SinhalaArchaicDigitSeven),
85            '𑇨' => Ok(SinhalaArchaicNumbers::SinhalaArchaicDigitEight),
86            '𑇩' => Ok(SinhalaArchaicNumbers::SinhalaArchaicDigitNine),
87            '𑇪' => Ok(SinhalaArchaicNumbers::SinhalaArchaicNumberTen),
88            '𑇫' => Ok(SinhalaArchaicNumbers::SinhalaArchaicNumberTwenty),
89            '𑇬' => Ok(SinhalaArchaicNumbers::SinhalaArchaicNumberThirty),
90            '𑇭' => Ok(SinhalaArchaicNumbers::SinhalaArchaicNumberForty),
91            '𑇮' => Ok(SinhalaArchaicNumbers::SinhalaArchaicNumberFifty),
92            '𑇯' => Ok(SinhalaArchaicNumbers::SinhalaArchaicNumberSixty),
93            '𑇰' => Ok(SinhalaArchaicNumbers::SinhalaArchaicNumberSeventy),
94            '𑇱' => Ok(SinhalaArchaicNumbers::SinhalaArchaicNumberEighty),
95            '𑇲' => Ok(SinhalaArchaicNumbers::SinhalaArchaicNumberNinety),
96            '𑇳' => Ok(SinhalaArchaicNumbers::SinhalaArchaicNumberOneHundred),
97            '𑇴' => Ok(SinhalaArchaicNumbers::SinhalaArchaicNumberOneThousand),
98            _ => Err(()),
99        }
100    }
101}
102
103impl Into<u32> for SinhalaArchaicNumbers {
104    fn into(self) -> u32 {
105        let c: char = self.into();
106        let hex = c
107            .escape_unicode()
108            .to_string()
109            .replace("\\u{", "")
110            .replace("}", "");
111        u32::from_str_radix(&hex, 16).unwrap()
112    }
113}
114
115impl std::convert::TryFrom<u32> for SinhalaArchaicNumbers {
116    type Error = ();
117    fn try_from(u: u32) -> Result<Self, Self::Error> {
118        if let Ok(c) = char::try_from(u) {
119            Self::try_from(c)
120        } else {
121            Err(())
122        }
123    }
124}
125
126impl Iterator for SinhalaArchaicNumbers {
127    type Item = Self;
128    fn next(&mut self) -> Option<Self> {
129        let index: u32 = (*self).into();
130        use std::convert::TryFrom;
131        Self::try_from(index + 1).ok()
132    }
133}
134
135impl SinhalaArchaicNumbers {
136    /// The character with the lowest index in this unicode block
137    pub fn new() -> Self {
138        SinhalaArchaicNumbers::SinhalaArchaicDigitOne
139    }
140
141    /// The character's name, in sentence case
142    pub fn name(&self) -> String {
143        let s = std::format!("SinhalaArchaicNumbers{:#?}", self);
144        string_morph::to_sentence_case(&s)
145    }
146}