unicode_types/generated/
supplementary_private_use_area_b.rs

1
2/// An enum to represent all characters in the SupplementaryPrivateUseAreaB block.
3#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum SupplementaryPrivateUseAreaB {
5    /// \u{100000}: '􀀀'
6    Plane16PrivateUseFirst,
7    /// \u{10fffd}: '􏿽'
8    Plane16PrivateUseLast,
9}
10
11impl Into<char> for SupplementaryPrivateUseAreaB {
12    fn into(self) -> char {
13        match self {
14            SupplementaryPrivateUseAreaB::Plane16PrivateUseFirst => '􀀀',
15            SupplementaryPrivateUseAreaB::Plane16PrivateUseLast => '􏿽',
16        }
17    }
18}
19
20impl std::convert::TryFrom<char> for SupplementaryPrivateUseAreaB {
21    type Error = ();
22    fn try_from(c: char) -> Result<Self, Self::Error> {
23        match c {
24            '􀀀' => Ok(SupplementaryPrivateUseAreaB::Plane16PrivateUseFirst),
25            '􏿽' => Ok(SupplementaryPrivateUseAreaB::Plane16PrivateUseLast),
26            _ => Err(()),
27        }
28    }
29}
30
31impl Into<u32> for SupplementaryPrivateUseAreaB {
32    fn into(self) -> u32 {
33        let c: char = self.into();
34        let hex = c
35            .escape_unicode()
36            .to_string()
37            .replace("\\u{", "")
38            .replace("}", "");
39        u32::from_str_radix(&hex, 16).unwrap()
40    }
41}
42
43impl std::convert::TryFrom<u32> for SupplementaryPrivateUseAreaB {
44    type Error = ();
45    fn try_from(u: u32) -> Result<Self, Self::Error> {
46        if let Ok(c) = char::try_from(u) {
47            Self::try_from(c)
48        } else {
49            Err(())
50        }
51    }
52}
53
54impl Iterator for SupplementaryPrivateUseAreaB {
55    type Item = Self;
56    fn next(&mut self) -> Option<Self> {
57        let index: u32 = (*self).into();
58        use std::convert::TryFrom;
59        Self::try_from(index + 1).ok()
60    }
61}
62
63impl SupplementaryPrivateUseAreaB {
64    /// The character with the lowest index in this unicode block
65    pub fn new() -> Self {
66        SupplementaryPrivateUseAreaB::Plane16PrivateUseFirst
67    }
68
69    /// The character's name, in sentence case
70    pub fn name(&self) -> String {
71        let s = std::format!("SupplementaryPrivateUseAreaB{:#?}", self);
72        string_morph::to_sentence_case(&s)
73    }
74}