common_words_all/
lib.rs

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}