1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
mod constants {
pub const SYRIAC_LETTER_MALAYALAM_NGA: char = 'ࡠ';
pub const SYRIAC_LETTER_MALAYALAM_JA: char = 'ࡡ';
pub const SYRIAC_LETTER_MALAYALAM_NYA: char = 'ࡢ';
pub const SYRIAC_LETTER_MALAYALAM_TTA: char = 'ࡣ';
pub const SYRIAC_LETTER_MALAYALAM_NNA: char = 'ࡤ';
pub const SYRIAC_LETTER_MALAYALAM_NNNA: char = 'ࡥ';
pub const SYRIAC_LETTER_MALAYALAM_BHA: char = 'ࡦ';
pub const SYRIAC_LETTER_MALAYALAM_RA: char = 'ࡧ';
pub const SYRIAC_LETTER_MALAYALAM_LLA: char = 'ࡨ';
pub const SYRIAC_LETTER_MALAYALAM_LLLA: char = 'ࡩ';
pub const SYRIAC_LETTER_MALAYALAM_SSA: char = 'ࡪ';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum SyriacSupplement {
SyriacLetterMalayalamNga,
SyriacLetterMalayalamJa,
SyriacLetterMalayalamNya,
SyriacLetterMalayalamTta,
SyriacLetterMalayalamNna,
SyriacLetterMalayalamNnna,
SyriacLetterMalayalamBha,
SyriacLetterMalayalamRa,
SyriacLetterMalayalamLla,
SyriacLetterMalayalamLlla,
SyriacLetterMalayalamSsa,
}
impl Into<char> for SyriacSupplement {
fn into(self) -> char {
use constants::*;
match self {
SyriacSupplement::SyriacLetterMalayalamNga => SYRIAC_LETTER_MALAYALAM_NGA,
SyriacSupplement::SyriacLetterMalayalamJa => SYRIAC_LETTER_MALAYALAM_JA,
SyriacSupplement::SyriacLetterMalayalamNya => SYRIAC_LETTER_MALAYALAM_NYA,
SyriacSupplement::SyriacLetterMalayalamTta => SYRIAC_LETTER_MALAYALAM_TTA,
SyriacSupplement::SyriacLetterMalayalamNna => SYRIAC_LETTER_MALAYALAM_NNA,
SyriacSupplement::SyriacLetterMalayalamNnna => SYRIAC_LETTER_MALAYALAM_NNNA,
SyriacSupplement::SyriacLetterMalayalamBha => SYRIAC_LETTER_MALAYALAM_BHA,
SyriacSupplement::SyriacLetterMalayalamRa => SYRIAC_LETTER_MALAYALAM_RA,
SyriacSupplement::SyriacLetterMalayalamLla => SYRIAC_LETTER_MALAYALAM_LLA,
SyriacSupplement::SyriacLetterMalayalamLlla => SYRIAC_LETTER_MALAYALAM_LLLA,
SyriacSupplement::SyriacLetterMalayalamSsa => SYRIAC_LETTER_MALAYALAM_SSA,
}
}
}
impl std::convert::TryFrom<char> for SyriacSupplement {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
SYRIAC_LETTER_MALAYALAM_NGA => Ok(SyriacSupplement::SyriacLetterMalayalamNga),
SYRIAC_LETTER_MALAYALAM_JA => Ok(SyriacSupplement::SyriacLetterMalayalamJa),
SYRIAC_LETTER_MALAYALAM_NYA => Ok(SyriacSupplement::SyriacLetterMalayalamNya),
SYRIAC_LETTER_MALAYALAM_TTA => Ok(SyriacSupplement::SyriacLetterMalayalamTta),
SYRIAC_LETTER_MALAYALAM_NNA => Ok(SyriacSupplement::SyriacLetterMalayalamNna),
SYRIAC_LETTER_MALAYALAM_NNNA => Ok(SyriacSupplement::SyriacLetterMalayalamNnna),
SYRIAC_LETTER_MALAYALAM_BHA => Ok(SyriacSupplement::SyriacLetterMalayalamBha),
SYRIAC_LETTER_MALAYALAM_RA => Ok(SyriacSupplement::SyriacLetterMalayalamRa),
SYRIAC_LETTER_MALAYALAM_LLA => Ok(SyriacSupplement::SyriacLetterMalayalamLla),
SYRIAC_LETTER_MALAYALAM_LLLA => Ok(SyriacSupplement::SyriacLetterMalayalamLlla),
SYRIAC_LETTER_MALAYALAM_SSA => Ok(SyriacSupplement::SyriacLetterMalayalamSsa),
_ => Err(()),
}
}
}
impl Into<u32> for SyriacSupplement {
fn into(self) -> u32 {
let c: char = self.into();
let hex = c
.escape_unicode()
.to_string()
.replace("\\u{", "")
.replace("}", "");
u32::from_str_radix(&hex, 16).unwrap()
}
}
impl std::convert::TryFrom<u32> for SyriacSupplement {
type Error = ();
fn try_from(u: u32) -> Result<Self, Self::Error> {
if let Ok(c) = char::try_from(u) {
Self::try_from(c)
} else {
Err(())
}
}
}
impl Iterator for SyriacSupplement {
type Item = Self;
fn next(&mut self) -> Option<Self> {
let index: u32 = (*self).into();
use std::convert::TryFrom;
Self::try_from(index + 1).ok()
}
}
impl SyriacSupplement {
pub fn new() -> Self {
SyriacSupplement::SyriacLetterMalayalamNga
}
pub fn name(&self) -> &str {
match self {
SyriacSupplement::SyriacLetterMalayalamNga => "syriac letter malayalam nga",
SyriacSupplement::SyriacLetterMalayalamJa => "syriac letter malayalam ja",
SyriacSupplement::SyriacLetterMalayalamNya => "syriac letter malayalam nya",
SyriacSupplement::SyriacLetterMalayalamTta => "syriac letter malayalam tta",
SyriacSupplement::SyriacLetterMalayalamNna => "syriac letter malayalam nna",
SyriacSupplement::SyriacLetterMalayalamNnna => "syriac letter malayalam nnna",
SyriacSupplement::SyriacLetterMalayalamBha => "syriac letter malayalam bha",
SyriacSupplement::SyriacLetterMalayalamRa => "syriac letter malayalam ra",
SyriacSupplement::SyriacLetterMalayalamLla => "syriac letter malayalam lla",
SyriacSupplement::SyriacLetterMalayalamLlla => "syriac letter malayalam llla",
SyriacSupplement::SyriacLetterMalayalamSsa => "syriac letter malayalam ssa",
}
}
}