unicode_types/generated/
buginese.rs

1
2/// An enum to represent all characters in the Buginese block.
3#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum Buginese {
5    /// \u{1a00}: 'ᨀ'
6    LetterKa,
7    /// \u{1a01}: 'ᨁ'
8    LetterGa,
9    /// \u{1a02}: 'ᨂ'
10    LetterNga,
11    /// \u{1a03}: 'ᨃ'
12    LetterNgka,
13    /// \u{1a04}: 'ᨄ'
14    LetterPa,
15    /// \u{1a05}: 'ᨅ'
16    LetterBa,
17    /// \u{1a06}: 'ᨆ'
18    LetterMa,
19    /// \u{1a07}: 'ᨇ'
20    LetterMpa,
21    /// \u{1a08}: 'ᨈ'
22    LetterTa,
23    /// \u{1a09}: 'ᨉ'
24    LetterDa,
25    /// \u{1a0a}: 'ᨊ'
26    LetterNa,
27    /// \u{1a0b}: 'ᨋ'
28    LetterNra,
29    /// \u{1a0c}: 'ᨌ'
30    LetterCa,
31    /// \u{1a0d}: 'ᨍ'
32    LetterJa,
33    /// \u{1a0e}: 'ᨎ'
34    LetterNya,
35    /// \u{1a0f}: 'ᨏ'
36    LetterNyca,
37    /// \u{1a10}: 'ᨐ'
38    LetterYa,
39    /// \u{1a11}: 'ᨑ'
40    LetterRa,
41    /// \u{1a12}: 'ᨒ'
42    LetterLa,
43    /// \u{1a13}: 'ᨓ'
44    LetterVa,
45    /// \u{1a14}: 'ᨔ'
46    LetterSa,
47    /// \u{1a15}: 'ᨕ'
48    LetterA,
49    /// \u{1a16}: 'ᨖ'
50    LetterHa,
51    /// \u{1a17}: 'ᨗ'
52    VowelSignI,
53    /// \u{1a18}: 'ᨘ'
54    VowelSignU,
55    /// \u{1a19}: 'ᨙ'
56    VowelSignE,
57    /// \u{1a1a}: 'ᨚ'
58    VowelSignO,
59    /// \u{1a1b}: 'ᨛ'
60    VowelSignAe,
61    /// \u{1a1e}: '᨞'
62    Pallawa,
63}
64
65impl Into<char> for Buginese {
66    fn into(self) -> char {
67        match self {
68            Buginese::LetterKa => 'ᨀ',
69            Buginese::LetterGa => 'ᨁ',
70            Buginese::LetterNga => 'ᨂ',
71            Buginese::LetterNgka => 'ᨃ',
72            Buginese::LetterPa => 'ᨄ',
73            Buginese::LetterBa => 'ᨅ',
74            Buginese::LetterMa => 'ᨆ',
75            Buginese::LetterMpa => 'ᨇ',
76            Buginese::LetterTa => 'ᨈ',
77            Buginese::LetterDa => 'ᨉ',
78            Buginese::LetterNa => 'ᨊ',
79            Buginese::LetterNra => 'ᨋ',
80            Buginese::LetterCa => 'ᨌ',
81            Buginese::LetterJa => 'ᨍ',
82            Buginese::LetterNya => 'ᨎ',
83            Buginese::LetterNyca => 'ᨏ',
84            Buginese::LetterYa => 'ᨐ',
85            Buginese::LetterRa => 'ᨑ',
86            Buginese::LetterLa => 'ᨒ',
87            Buginese::LetterVa => 'ᨓ',
88            Buginese::LetterSa => 'ᨔ',
89            Buginese::LetterA => 'ᨕ',
90            Buginese::LetterHa => 'ᨖ',
91            Buginese::VowelSignI => 'ᨗ',
92            Buginese::VowelSignU => 'ᨘ',
93            Buginese::VowelSignE => 'ᨙ',
94            Buginese::VowelSignO => 'ᨚ',
95            Buginese::VowelSignAe => 'ᨛ',
96            Buginese::Pallawa => '᨞',
97        }
98    }
99}
100
101impl std::convert::TryFrom<char> for Buginese {
102    type Error = ();
103    fn try_from(c: char) -> Result<Self, Self::Error> {
104        match c {
105            'ᨀ' => Ok(Buginese::LetterKa),
106            'ᨁ' => Ok(Buginese::LetterGa),
107            'ᨂ' => Ok(Buginese::LetterNga),
108            'ᨃ' => Ok(Buginese::LetterNgka),
109            'ᨄ' => Ok(Buginese::LetterPa),
110            'ᨅ' => Ok(Buginese::LetterBa),
111            'ᨆ' => Ok(Buginese::LetterMa),
112            'ᨇ' => Ok(Buginese::LetterMpa),
113            'ᨈ' => Ok(Buginese::LetterTa),
114            'ᨉ' => Ok(Buginese::LetterDa),
115            'ᨊ' => Ok(Buginese::LetterNa),
116            'ᨋ' => Ok(Buginese::LetterNra),
117            'ᨌ' => Ok(Buginese::LetterCa),
118            'ᨍ' => Ok(Buginese::LetterJa),
119            'ᨎ' => Ok(Buginese::LetterNya),
120            'ᨏ' => Ok(Buginese::LetterNyca),
121            'ᨐ' => Ok(Buginese::LetterYa),
122            'ᨑ' => Ok(Buginese::LetterRa),
123            'ᨒ' => Ok(Buginese::LetterLa),
124            'ᨓ' => Ok(Buginese::LetterVa),
125            'ᨔ' => Ok(Buginese::LetterSa),
126            'ᨕ' => Ok(Buginese::LetterA),
127            'ᨖ' => Ok(Buginese::LetterHa),
128            'ᨗ' => Ok(Buginese::VowelSignI),
129            'ᨘ' => Ok(Buginese::VowelSignU),
130            'ᨙ' => Ok(Buginese::VowelSignE),
131            'ᨚ' => Ok(Buginese::VowelSignO),
132            'ᨛ' => Ok(Buginese::VowelSignAe),
133            '᨞' => Ok(Buginese::Pallawa),
134            _ => Err(()),
135        }
136    }
137}
138
139impl Into<u32> for Buginese {
140    fn into(self) -> u32 {
141        let c: char = self.into();
142        let hex = c
143            .escape_unicode()
144            .to_string()
145            .replace("\\u{", "")
146            .replace("}", "");
147        u32::from_str_radix(&hex, 16).unwrap()
148    }
149}
150
151impl std::convert::TryFrom<u32> for Buginese {
152    type Error = ();
153    fn try_from(u: u32) -> Result<Self, Self::Error> {
154        if let Ok(c) = char::try_from(u) {
155            Self::try_from(c)
156        } else {
157            Err(())
158        }
159    }
160}
161
162impl Iterator for Buginese {
163    type Item = Self;
164    fn next(&mut self) -> Option<Self> {
165        let index: u32 = (*self).into();
166        use std::convert::TryFrom;
167        Self::try_from(index + 1).ok()
168    }
169}
170
171impl Buginese {
172    /// The character with the lowest index in this unicode block
173    pub fn new() -> Self {
174        Buginese::LetterKa
175    }
176
177    /// The character's name, in sentence case
178    pub fn name(&self) -> String {
179        let s = std::format!("Buginese{:#?}", self);
180        string_morph::to_sentence_case(&s)
181    }
182}