1pub mod generated;
2pub mod types;
3
4use generated::*;
5pub use types::*;
6
7pub fn get_array(language: Language, size: NgramSize) -> Vec<Record<'static>> {
8 match (language, size) {
9 #[cfg(all(feature = "chinese", feature = "one"))]
10 (Language::Chinese, NgramSize::One) => cwa_1grams_chinese_simplified.to_vec(),
11 #[cfg(all(feature = "chinese", feature = "two"))]
12 (Language::Chinese, NgramSize::Two) => cwa_2grams_chinese_simplified.to_vec(),
13 #[cfg(all(feature = "chinese", feature = "three"))]
14 (Language::Chinese, NgramSize::Three) => cwa_3grams_chinese_simplified.to_vec(),
15 #[cfg(all(feature = "chinese", feature = "four"))]
16 (Language::Chinese, NgramSize::Four) => cwa_4grams_chinese_simplified.to_vec(),
17 #[cfg(all(feature = "chinese", feature = "five"))]
18 (Language::Chinese, NgramSize::Five) => cwa_5grams_chinese_simplified.to_vec(),
19
20 #[cfg(all(feature = "english", feature = "one"))]
21 (Language::English, NgramSize::One) => cwa_1grams_english.to_vec(),
22 #[cfg(all(feature = "english", feature = "two"))]
23 (Language::English, NgramSize::Two) => cwa_2grams_english.to_vec(),
24 #[cfg(all(feature = "english", feature = "three"))]
25 (Language::English, NgramSize::Three) => cwa_3grams_english.to_vec(),
26 #[cfg(all(feature = "english", feature = "four"))]
27 (Language::English, NgramSize::Four) => cwa_4grams_english.to_vec(),
28 #[cfg(all(feature = "english", feature = "five"))]
29 (Language::English, NgramSize::Five) => cwa_5grams_english.to_vec(),
30
31 #[cfg(all(feature = "french", feature = "one"))]
32 (Language::French, NgramSize::One) => cwa_1grams_french.to_vec(),
33 #[cfg(all(feature = "french", feature = "two"))]
34 (Language::French, NgramSize::Two) => cwa_2grams_french.to_vec(),
35 #[cfg(all(feature = "french", feature = "three"))]
36 (Language::French, NgramSize::Three) => cwa_3grams_french.to_vec(),
37 #[cfg(all(feature = "french", feature = "four"))]
38 (Language::French, NgramSize::Four) => cwa_4grams_french.to_vec(),
39 #[cfg(all(feature = "french", feature = "five"))]
40 (Language::French, NgramSize::Five) => cwa_5grams_french.to_vec(),
41
42 #[cfg(all(feature = "german", feature = "one"))]
43 (Language::German, NgramSize::One) => cwa_1grams_german.to_vec(),
44 #[cfg(all(feature = "german", feature = "two"))]
45 (Language::German, NgramSize::Two) => cwa_2grams_german.to_vec(),
46 #[cfg(all(feature = "german", feature = "three"))]
47 (Language::German, NgramSize::Three) => cwa_3grams_german.to_vec(),
48 #[cfg(all(feature = "german", feature = "four"))]
49 (Language::German, NgramSize::Four) => cwa_4grams_german.to_vec(),
50 #[cfg(all(feature = "german", feature = "five"))]
51 (Language::German, NgramSize::Five) => cwa_5grams_german.to_vec(),
52
53 #[cfg(all(feature = "hebrew", feature = "one"))]
54 (Language::Hebrew, NgramSize::One) => cwa_1grams_hebrew.to_vec(),
55 #[cfg(all(feature = "hebrew", feature = "two"))]
56 (Language::Hebrew, NgramSize::Two) => cwa_2grams_hebrew.to_vec(),
57 #[cfg(all(feature = "hebrew", feature = "three"))]
58 (Language::Hebrew, NgramSize::Three) => cwa_3grams_hebrew.to_vec(),
59 #[cfg(all(feature = "hebrew", feature = "four"))]
60 (Language::Hebrew, NgramSize::Four) => cwa_4grams_hebrew.to_vec(),
61 #[cfg(all(feature = "hebrew", feature = "five"))]
62 (Language::Hebrew, NgramSize::Five) => cwa_5grams_hebrew.to_vec(),
63
64 #[cfg(all(feature = "italian", feature = "one"))]
65 (Language::Italian, NgramSize::One) => cwa_1grams_italian.to_vec(),
66 #[cfg(all(feature = "italian", feature = "two"))]
67 (Language::Italian, NgramSize::Two) => cwa_2grams_italian.to_vec(),
68 #[cfg(all(feature = "italian", feature = "three"))]
69 (Language::Italian, NgramSize::Three) => cwa_3grams_italian.to_vec(),
70 #[cfg(all(feature = "italian", feature = "four"))]
71 (Language::Italian, NgramSize::Four) => cwa_4grams_italian.to_vec(),
72 #[cfg(all(feature = "italian", feature = "five"))]
73 (Language::Italian, NgramSize::Five) => cwa_5grams_italian.to_vec(),
74
75 #[cfg(all(feature = "russian", feature = "one"))]
76 (Language::Russian, NgramSize::One) => cwa_1grams_russian.to_vec(),
77 #[cfg(all(feature = "russian", feature = "two"))]
78 (Language::Russian, NgramSize::Two) => cwa_2grams_russian.to_vec(),
79 #[cfg(all(feature = "russian", feature = "three"))]
80 (Language::Russian, NgramSize::Three) => cwa_3grams_russian.to_vec(),
81 #[cfg(all(feature = "russian", feature = "four"))]
82 (Language::Russian, NgramSize::Four) => cwa_4grams_russian.to_vec(),
83 #[cfg(all(feature = "russian", feature = "five"))]
84 (Language::Russian, NgramSize::Five) => cwa_5grams_russian.to_vec(),
85
86 #[cfg(all(feature = "spanish", feature = "one"))]
87 (Language::Spanish, NgramSize::One) => cwa_1grams_spanish.to_vec(),
88 #[cfg(all(feature = "spanish", feature = "two"))]
89 (Language::Spanish, NgramSize::Two) => cwa_2grams_spanish.to_vec(),
90 #[cfg(all(feature = "spanish", feature = "three"))]
91 (Language::Spanish, NgramSize::Three) => cwa_3grams_spanish.to_vec(),
92 #[cfg(all(feature = "spanish", feature = "four"))]
93 (Language::Spanish, NgramSize::Four) => cwa_4grams_spanish.to_vec(),
94 #[cfg(all(feature = "spanish", feature = "five"))]
95 (Language::Spanish, NgramSize::Five) => cwa_5grams_spanish.to_vec(),
96 }
97}
98
99pub fn get_top(language: Language, top: usize, size: NgramSize) -> Vec<&'static str> {
100 let array = get_array(language, size);
101 let top_ngrams = array.iter().take(top).into_iter().map(|record|record.ngram).collect::<Vec<&str>>();
102
103 top_ngrams
104}