whatlang/scripts/
grouping.rs1use super::Script;
2use crate::Lang;
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum MultiLangScript {
6 Latin,
7 Cyrillic,
8 Arabic,
9 Devanagari,
10 Hebrew,
11}
12
13impl MultiLangScript {
14 pub fn to_script(self) -> Script {
15 match self {
16 Self::Latin => Script::Latin,
17 Self::Cyrillic => Script::Cyrillic,
18 Self::Arabic => Script::Arabic,
19 Self::Devanagari => Script::Devanagari,
20 Self::Hebrew => Script::Hebrew,
21 }
22 }
23}
24
25#[derive(Debug, Clone, Copy, PartialEq, Eq)]
26pub enum ScriptLangGroup {
27 Multi(MultiLangScript),
28 One(Lang),
29
30 Mandarin,
34}
35
36impl Script {
37 pub fn to_lang_group(self) -> ScriptLangGroup {
38 use MultiLangScript as MLS;
39 use ScriptLangGroup::{Mandarin, Multi, One};
40
41 match self {
42 Script::Latin => Multi(MLS::Latin),
43 Script::Cyrillic => Multi(MLS::Cyrillic),
44 Script::Arabic => Multi(MLS::Arabic),
45 Script::Devanagari => Multi(MLS::Devanagari),
46 Script::Hebrew => Multi(MLS::Hebrew),
47 Script::Mandarin => Mandarin,
48 Script::Bengali => One(Lang::Ben),
49 Script::Hangul => One(Lang::Kor),
50 Script::Georgian => One(Lang::Kat),
51 Script::Greek => One(Lang::Ell),
52 Script::Kannada => One(Lang::Kan),
53 Script::Tamil => One(Lang::Tam),
54 Script::Thai => One(Lang::Tha),
55 Script::Gujarati => One(Lang::Guj),
56 Script::Gurmukhi => One(Lang::Pan),
57 Script::Telugu => One(Lang::Tel),
58 Script::Malayalam => One(Lang::Mal),
59 Script::Oriya => One(Lang::Ori),
60 Script::Myanmar => One(Lang::Mya),
61 Script::Sinhala => One(Lang::Sin),
62 Script::Khmer => One(Lang::Khm),
63 Script::Ethiopic => One(Lang::Amh),
64 Script::Armenian => One(Lang::Hye),
65 Script::Katakana | Script::Hiragana => One(Lang::Jpn),
66 }
67 }
68}
69
70#[cfg(test)]
71mod tests {
72 use super::*;
73
74 #[test]
75 fn test_script_to_lang_group() {
76 assert_eq!(
77 Script::Latin.to_lang_group(),
78 ScriptLangGroup::Multi(MultiLangScript::Latin)
79 );
80
81 assert_eq!(
82 Script::Georgian.to_lang_group(),
83 ScriptLangGroup::One(Lang::Kat)
84 );
85 }
86
87 #[test]
88 fn test_multi_lang_script_to_script() {
89 assert_eq!(MultiLangScript::Latin.to_script(), Script::Latin);
90 assert_eq!(MultiLangScript::Hebrew.to_script(), Script::Hebrew);
91 }
92}