unicode_types/generated/
control_pictures.rs

1
2/// An enum to represent all characters in the ControlPictures block.
3#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum ControlPictures {
5    /// \u{2400}: '␀'
6    SymbolForNull,
7    /// \u{2401}: '␁'
8    SymbolForStartOfHeading,
9    /// \u{2402}: '␂'
10    SymbolForStartOfText,
11    /// \u{2403}: '␃'
12    SymbolForEndOfText,
13    /// \u{2404}: '␄'
14    SymbolForEndOfTransmission,
15    /// \u{2405}: '␅'
16    SymbolForEnquiry,
17    /// \u{2406}: '␆'
18    SymbolForAcknowledge,
19    /// \u{2407}: '␇'
20    SymbolForBell,
21    /// \u{2408}: '␈'
22    SymbolForBackspace,
23    /// \u{2409}: '␉'
24    SymbolForHorizontalTabulation,
25    /// \u{240a}: '␊'
26    SymbolForLineFeed,
27    /// \u{240b}: '␋'
28    SymbolForVerticalTabulation,
29    /// \u{240c}: '␌'
30    SymbolForFormFeed,
31    /// \u{240d}: '␍'
32    SymbolForCarriageReturn,
33    /// \u{240e}: '␎'
34    SymbolForShiftOut,
35    /// \u{240f}: '␏'
36    SymbolForShiftIn,
37    /// \u{2410}: '␐'
38    SymbolForDataLinkEscape,
39    /// \u{2411}: '␑'
40    SymbolForDeviceControlOne,
41    /// \u{2412}: '␒'
42    SymbolForDeviceControlTwo,
43    /// \u{2413}: '␓'
44    SymbolForDeviceControlThree,
45    /// \u{2414}: '␔'
46    SymbolForDeviceControlFour,
47    /// \u{2415}: '␕'
48    SymbolForNegativeAcknowledge,
49    /// \u{2416}: '␖'
50    SymbolForSynchronousIdle,
51    /// \u{2417}: '␗'
52    SymbolForEndOfTransmissionBlock,
53    /// \u{2418}: '␘'
54    SymbolForCancel,
55    /// \u{2419}: '␙'
56    SymbolForEndOfMedium,
57    /// \u{241a}: '␚'
58    SymbolForSubstitute,
59    /// \u{241b}: '␛'
60    SymbolForEscape,
61    /// \u{241c}: '␜'
62    SymbolForFileSeparator,
63    /// \u{241d}: '␝'
64    SymbolForGroupSeparator,
65    /// \u{241e}: '␞'
66    SymbolForRecordSeparator,
67    /// \u{241f}: '␟'
68    SymbolForUnitSeparator,
69    /// \u{2420}: '␠'
70    SymbolForSpace,
71    /// \u{2421}: '␡'
72    SymbolForDelete,
73    /// \u{2422}: '␢'
74    BlankSymbol,
75    /// \u{2423}: '␣'
76    OpenBox,
77    /// \u{2424}: '␤'
78    SymbolForNewline,
79    /// \u{2425}: '␥'
80    SymbolForDeleteFormTwo,
81    /// \u{2426}: '␦'
82    SymbolForSubstituteFormTwo,
83}
84
85impl Into<char> for ControlPictures {
86    fn into(self) -> char {
87        match self {
88            ControlPictures::SymbolForNull => '␀',
89            ControlPictures::SymbolForStartOfHeading => '␁',
90            ControlPictures::SymbolForStartOfText => '␂',
91            ControlPictures::SymbolForEndOfText => '␃',
92            ControlPictures::SymbolForEndOfTransmission => '␄',
93            ControlPictures::SymbolForEnquiry => '␅',
94            ControlPictures::SymbolForAcknowledge => '␆',
95            ControlPictures::SymbolForBell => '␇',
96            ControlPictures::SymbolForBackspace => '␈',
97            ControlPictures::SymbolForHorizontalTabulation => '␉',
98            ControlPictures::SymbolForLineFeed => '␊',
99            ControlPictures::SymbolForVerticalTabulation => '␋',
100            ControlPictures::SymbolForFormFeed => '␌',
101            ControlPictures::SymbolForCarriageReturn => '␍',
102            ControlPictures::SymbolForShiftOut => '␎',
103            ControlPictures::SymbolForShiftIn => '␏',
104            ControlPictures::SymbolForDataLinkEscape => '␐',
105            ControlPictures::SymbolForDeviceControlOne => '␑',
106            ControlPictures::SymbolForDeviceControlTwo => '␒',
107            ControlPictures::SymbolForDeviceControlThree => '␓',
108            ControlPictures::SymbolForDeviceControlFour => '␔',
109            ControlPictures::SymbolForNegativeAcknowledge => '␕',
110            ControlPictures::SymbolForSynchronousIdle => '␖',
111            ControlPictures::SymbolForEndOfTransmissionBlock => '␗',
112            ControlPictures::SymbolForCancel => '␘',
113            ControlPictures::SymbolForEndOfMedium => '␙',
114            ControlPictures::SymbolForSubstitute => '␚',
115            ControlPictures::SymbolForEscape => '␛',
116            ControlPictures::SymbolForFileSeparator => '␜',
117            ControlPictures::SymbolForGroupSeparator => '␝',
118            ControlPictures::SymbolForRecordSeparator => '␞',
119            ControlPictures::SymbolForUnitSeparator => '␟',
120            ControlPictures::SymbolForSpace => '␠',
121            ControlPictures::SymbolForDelete => '␡',
122            ControlPictures::BlankSymbol => '␢',
123            ControlPictures::OpenBox => '␣',
124            ControlPictures::SymbolForNewline => '␤',
125            ControlPictures::SymbolForDeleteFormTwo => '␥',
126            ControlPictures::SymbolForSubstituteFormTwo => '␦',
127        }
128    }
129}
130
131impl std::convert::TryFrom<char> for ControlPictures {
132    type Error = ();
133    fn try_from(c: char) -> Result<Self, Self::Error> {
134        match c {
135            '␀' => Ok(ControlPictures::SymbolForNull),
136            '␁' => Ok(ControlPictures::SymbolForStartOfHeading),
137            '␂' => Ok(ControlPictures::SymbolForStartOfText),
138            '␃' => Ok(ControlPictures::SymbolForEndOfText),
139            '␄' => Ok(ControlPictures::SymbolForEndOfTransmission),
140            '␅' => Ok(ControlPictures::SymbolForEnquiry),
141            '␆' => Ok(ControlPictures::SymbolForAcknowledge),
142            '␇' => Ok(ControlPictures::SymbolForBell),
143            '␈' => Ok(ControlPictures::SymbolForBackspace),
144            '␉' => Ok(ControlPictures::SymbolForHorizontalTabulation),
145            '␊' => Ok(ControlPictures::SymbolForLineFeed),
146            '␋' => Ok(ControlPictures::SymbolForVerticalTabulation),
147            '␌' => Ok(ControlPictures::SymbolForFormFeed),
148            '␍' => Ok(ControlPictures::SymbolForCarriageReturn),
149            '␎' => Ok(ControlPictures::SymbolForShiftOut),
150            '␏' => Ok(ControlPictures::SymbolForShiftIn),
151            '␐' => Ok(ControlPictures::SymbolForDataLinkEscape),
152            '␑' => Ok(ControlPictures::SymbolForDeviceControlOne),
153            '␒' => Ok(ControlPictures::SymbolForDeviceControlTwo),
154            '␓' => Ok(ControlPictures::SymbolForDeviceControlThree),
155            '␔' => Ok(ControlPictures::SymbolForDeviceControlFour),
156            '␕' => Ok(ControlPictures::SymbolForNegativeAcknowledge),
157            '␖' => Ok(ControlPictures::SymbolForSynchronousIdle),
158            '␗' => Ok(ControlPictures::SymbolForEndOfTransmissionBlock),
159            '␘' => Ok(ControlPictures::SymbolForCancel),
160            '␙' => Ok(ControlPictures::SymbolForEndOfMedium),
161            '␚' => Ok(ControlPictures::SymbolForSubstitute),
162            '␛' => Ok(ControlPictures::SymbolForEscape),
163            '␜' => Ok(ControlPictures::SymbolForFileSeparator),
164            '␝' => Ok(ControlPictures::SymbolForGroupSeparator),
165            '␞' => Ok(ControlPictures::SymbolForRecordSeparator),
166            '␟' => Ok(ControlPictures::SymbolForUnitSeparator),
167            '␠' => Ok(ControlPictures::SymbolForSpace),
168            '␡' => Ok(ControlPictures::SymbolForDelete),
169            '␢' => Ok(ControlPictures::BlankSymbol),
170            '␣' => Ok(ControlPictures::OpenBox),
171            '␤' => Ok(ControlPictures::SymbolForNewline),
172            '␥' => Ok(ControlPictures::SymbolForDeleteFormTwo),
173            '␦' => Ok(ControlPictures::SymbolForSubstituteFormTwo),
174            _ => Err(()),
175        }
176    }
177}
178
179impl Into<u32> for ControlPictures {
180    fn into(self) -> u32 {
181        let c: char = self.into();
182        let hex = c
183            .escape_unicode()
184            .to_string()
185            .replace("\\u{", "")
186            .replace("}", "");
187        u32::from_str_radix(&hex, 16).unwrap()
188    }
189}
190
191impl std::convert::TryFrom<u32> for ControlPictures {
192    type Error = ();
193    fn try_from(u: u32) -> Result<Self, Self::Error> {
194        if let Ok(c) = char::try_from(u) {
195            Self::try_from(c)
196        } else {
197            Err(())
198        }
199    }
200}
201
202impl Iterator for ControlPictures {
203    type Item = Self;
204    fn next(&mut self) -> Option<Self> {
205        let index: u32 = (*self).into();
206        use std::convert::TryFrom;
207        Self::try_from(index + 1).ok()
208    }
209}
210
211impl ControlPictures {
212    /// The character with the lowest index in this unicode block
213    pub fn new() -> Self {
214        ControlPictures::SymbolForNull
215    }
216
217    /// The character's name, in sentence case
218    pub fn name(&self) -> String {
219        let s = std::format!("ControlPictures{:#?}", self);
220        string_morph::to_sentence_case(&s)
221    }
222}