unicode_types/generated/
kana_extended_a.rs

1
2/// An enum to represent all characters in the KanaExtendedA block.
3#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum KanaExtendedA {
5    /// \u{1b100}: '𛄀'
6    HentaiganaLetterReDash3,
7    /// \u{1b101}: '𛄁'
8    HentaiganaLetterReDash4,
9    /// \u{1b102}: '𛄂'
10    HentaiganaLetterRoDash1,
11    /// \u{1b103}: '𛄃'
12    HentaiganaLetterRoDash2,
13    /// \u{1b104}: '𛄄'
14    HentaiganaLetterRoDash3,
15    /// \u{1b105}: '𛄅'
16    HentaiganaLetterRoDash4,
17    /// \u{1b106}: '𛄆'
18    HentaiganaLetterRoDash5,
19    /// \u{1b107}: '𛄇'
20    HentaiganaLetterRoDash6,
21    /// \u{1b108}: '𛄈'
22    HentaiganaLetterWaDash1,
23    /// \u{1b109}: '𛄉'
24    HentaiganaLetterWaDash2,
25    /// \u{1b10a}: '𛄊'
26    HentaiganaLetterWaDash3,
27    /// \u{1b10b}: '𛄋'
28    HentaiganaLetterWaDash4,
29    /// \u{1b10c}: '𛄌'
30    HentaiganaLetterWaDash5,
31    /// \u{1b10d}: '𛄍'
32    HentaiganaLetterWiDash1,
33    /// \u{1b10e}: '𛄎'
34    HentaiganaLetterWiDash2,
35    /// \u{1b10f}: '𛄏'
36    HentaiganaLetterWiDash3,
37    /// \u{1b110}: '𛄐'
38    HentaiganaLetterWiDash4,
39    /// \u{1b111}: '𛄑'
40    HentaiganaLetterWiDash5,
41    /// \u{1b112}: '𛄒'
42    HentaiganaLetterWeDash1,
43    /// \u{1b113}: '𛄓'
44    HentaiganaLetterWeDash2,
45    /// \u{1b114}: '𛄔'
46    HentaiganaLetterWeDash3,
47    /// \u{1b115}: '𛄕'
48    HentaiganaLetterWeDash4,
49    /// \u{1b116}: '𛄖'
50    HentaiganaLetterWoDash1,
51    /// \u{1b117}: '𛄗'
52    HentaiganaLetterWoDash2,
53    /// \u{1b118}: '𛄘'
54    HentaiganaLetterWoDash3,
55    /// \u{1b119}: '𛄙'
56    HentaiganaLetterWoDash4,
57    /// \u{1b11a}: '𛄚'
58    HentaiganaLetterWoDash5,
59    /// \u{1b11b}: '𛄛'
60    HentaiganaLetterWoDash6,
61    /// \u{1b11c}: '𛄜'
62    HentaiganaLetterWoDash7,
63    /// \u{1b11d}: '𛄝'
64    HentaiganaLetterNDashMuDashMoDash1,
65    /// \u{1b11e}: '𛄞'
66    HentaiganaLetterNDashMuDashMoDash2,
67}
68
69impl Into<char> for KanaExtendedA {
70    fn into(self) -> char {
71        match self {
72            KanaExtendedA::HentaiganaLetterReDash3 => '𛄀',
73            KanaExtendedA::HentaiganaLetterReDash4 => '𛄁',
74            KanaExtendedA::HentaiganaLetterRoDash1 => '𛄂',
75            KanaExtendedA::HentaiganaLetterRoDash2 => '𛄃',
76            KanaExtendedA::HentaiganaLetterRoDash3 => '𛄄',
77            KanaExtendedA::HentaiganaLetterRoDash4 => '𛄅',
78            KanaExtendedA::HentaiganaLetterRoDash5 => '𛄆',
79            KanaExtendedA::HentaiganaLetterRoDash6 => '𛄇',
80            KanaExtendedA::HentaiganaLetterWaDash1 => '𛄈',
81            KanaExtendedA::HentaiganaLetterWaDash2 => '𛄉',
82            KanaExtendedA::HentaiganaLetterWaDash3 => '𛄊',
83            KanaExtendedA::HentaiganaLetterWaDash4 => '𛄋',
84            KanaExtendedA::HentaiganaLetterWaDash5 => '𛄌',
85            KanaExtendedA::HentaiganaLetterWiDash1 => '𛄍',
86            KanaExtendedA::HentaiganaLetterWiDash2 => '𛄎',
87            KanaExtendedA::HentaiganaLetterWiDash3 => '𛄏',
88            KanaExtendedA::HentaiganaLetterWiDash4 => '𛄐',
89            KanaExtendedA::HentaiganaLetterWiDash5 => '𛄑',
90            KanaExtendedA::HentaiganaLetterWeDash1 => '𛄒',
91            KanaExtendedA::HentaiganaLetterWeDash2 => '𛄓',
92            KanaExtendedA::HentaiganaLetterWeDash3 => '𛄔',
93            KanaExtendedA::HentaiganaLetterWeDash4 => '𛄕',
94            KanaExtendedA::HentaiganaLetterWoDash1 => '𛄖',
95            KanaExtendedA::HentaiganaLetterWoDash2 => '𛄗',
96            KanaExtendedA::HentaiganaLetterWoDash3 => '𛄘',
97            KanaExtendedA::HentaiganaLetterWoDash4 => '𛄙',
98            KanaExtendedA::HentaiganaLetterWoDash5 => '𛄚',
99            KanaExtendedA::HentaiganaLetterWoDash6 => '𛄛',
100            KanaExtendedA::HentaiganaLetterWoDash7 => '𛄜',
101            KanaExtendedA::HentaiganaLetterNDashMuDashMoDash1 => '𛄝',
102            KanaExtendedA::HentaiganaLetterNDashMuDashMoDash2 => '𛄞',
103        }
104    }
105}
106
107impl std::convert::TryFrom<char> for KanaExtendedA {
108    type Error = ();
109    fn try_from(c: char) -> Result<Self, Self::Error> {
110        match c {
111            '𛄀' => Ok(KanaExtendedA::HentaiganaLetterReDash3),
112            '𛄁' => Ok(KanaExtendedA::HentaiganaLetterReDash4),
113            '𛄂' => Ok(KanaExtendedA::HentaiganaLetterRoDash1),
114            '𛄃' => Ok(KanaExtendedA::HentaiganaLetterRoDash2),
115            '𛄄' => Ok(KanaExtendedA::HentaiganaLetterRoDash3),
116            '𛄅' => Ok(KanaExtendedA::HentaiganaLetterRoDash4),
117            '𛄆' => Ok(KanaExtendedA::HentaiganaLetterRoDash5),
118            '𛄇' => Ok(KanaExtendedA::HentaiganaLetterRoDash6),
119            '𛄈' => Ok(KanaExtendedA::HentaiganaLetterWaDash1),
120            '𛄉' => Ok(KanaExtendedA::HentaiganaLetterWaDash2),
121            '𛄊' => Ok(KanaExtendedA::HentaiganaLetterWaDash3),
122            '𛄋' => Ok(KanaExtendedA::HentaiganaLetterWaDash4),
123            '𛄌' => Ok(KanaExtendedA::HentaiganaLetterWaDash5),
124            '𛄍' => Ok(KanaExtendedA::HentaiganaLetterWiDash1),
125            '𛄎' => Ok(KanaExtendedA::HentaiganaLetterWiDash2),
126            '𛄏' => Ok(KanaExtendedA::HentaiganaLetterWiDash3),
127            '𛄐' => Ok(KanaExtendedA::HentaiganaLetterWiDash4),
128            '𛄑' => Ok(KanaExtendedA::HentaiganaLetterWiDash5),
129            '𛄒' => Ok(KanaExtendedA::HentaiganaLetterWeDash1),
130            '𛄓' => Ok(KanaExtendedA::HentaiganaLetterWeDash2),
131            '𛄔' => Ok(KanaExtendedA::HentaiganaLetterWeDash3),
132            '𛄕' => Ok(KanaExtendedA::HentaiganaLetterWeDash4),
133            '𛄖' => Ok(KanaExtendedA::HentaiganaLetterWoDash1),
134            '𛄗' => Ok(KanaExtendedA::HentaiganaLetterWoDash2),
135            '𛄘' => Ok(KanaExtendedA::HentaiganaLetterWoDash3),
136            '𛄙' => Ok(KanaExtendedA::HentaiganaLetterWoDash4),
137            '𛄚' => Ok(KanaExtendedA::HentaiganaLetterWoDash5),
138            '𛄛' => Ok(KanaExtendedA::HentaiganaLetterWoDash6),
139            '𛄜' => Ok(KanaExtendedA::HentaiganaLetterWoDash7),
140            '𛄝' => Ok(KanaExtendedA::HentaiganaLetterNDashMuDashMoDash1),
141            '𛄞' => Ok(KanaExtendedA::HentaiganaLetterNDashMuDashMoDash2),
142            _ => Err(()),
143        }
144    }
145}
146
147impl Into<u32> for KanaExtendedA {
148    fn into(self) -> u32 {
149        let c: char = self.into();
150        let hex = c
151            .escape_unicode()
152            .to_string()
153            .replace("\\u{", "")
154            .replace("}", "");
155        u32::from_str_radix(&hex, 16).unwrap()
156    }
157}
158
159impl std::convert::TryFrom<u32> for KanaExtendedA {
160    type Error = ();
161    fn try_from(u: u32) -> Result<Self, Self::Error> {
162        if let Ok(c) = char::try_from(u) {
163            Self::try_from(c)
164        } else {
165            Err(())
166        }
167    }
168}
169
170impl Iterator for KanaExtendedA {
171    type Item = Self;
172    fn next(&mut self) -> Option<Self> {
173        let index: u32 = (*self).into();
174        use std::convert::TryFrom;
175        Self::try_from(index + 1).ok()
176    }
177}
178
179impl KanaExtendedA {
180    /// The character with the lowest index in this unicode block
181    pub fn new() -> Self {
182        KanaExtendedA::HentaiganaLetterReDash3
183    }
184
185    /// The character's name, in sentence case
186    pub fn name(&self) -> String {
187        let s = std::format!("KanaExtendedA{:#?}", self);
188        string_morph::to_sentence_case(&s)
189    }
190}