whichtime_sys/dictionaries/
nl.rs1use super::{CasualDateType, CasualTimeType, RelativeModifier, TimeUnit, Weekday};
4use phf::phf_map;
5
6pub static WEEKDAY_MAP: phf::Map<&'static str, Weekday> = phf_map! {
8 "zondag" => Weekday::Sunday,
9 "zon" => Weekday::Sunday,
10 "zo" => Weekday::Sunday,
11 "zo." => Weekday::Sunday,
12 "maandag" => Weekday::Monday,
13 "maan" => Weekday::Monday,
14 "ma" => Weekday::Monday,
15 "ma." => Weekday::Monday,
16 "dinsdag" => Weekday::Tuesday,
17 "dins" => Weekday::Tuesday,
18 "di" => Weekday::Tuesday,
19 "di." => Weekday::Tuesday,
20 "woensdag" => Weekday::Wednesday,
21 "woens" => Weekday::Wednesday,
22 "wo" => Weekday::Wednesday,
23 "wo." => Weekday::Wednesday,
24 "donderdag" => Weekday::Thursday,
25 "donder" => Weekday::Thursday,
26 "do" => Weekday::Thursday,
27 "do." => Weekday::Thursday,
28 "vrijdag" => Weekday::Friday,
29 "vrij" => Weekday::Friday,
30 "vr" => Weekday::Friday,
31 "vr." => Weekday::Friday,
32 "zaterdag" => Weekday::Saturday,
33 "zater" => Weekday::Saturday,
34 "za" => Weekday::Saturday,
35 "za." => Weekday::Saturday,
36};
37
38pub static MONTH_MAP: phf::Map<&'static str, u32> = phf_map! {
40 "januari" => 1,
41 "jan" => 1,
42 "jan." => 1,
43 "februari" => 2,
44 "feb" => 2,
45 "feb." => 2,
46 "maart" => 3,
47 "mrt" => 3,
48 "mrt." => 3,
49 "april" => 4,
50 "apr" => 4,
51 "apr." => 4,
52 "mei" => 5,
53 "juni" => 6,
54 "jun" => 6,
55 "jun." => 6,
56 "juli" => 7,
57 "jul" => 7,
58 "jul." => 7,
59 "augustus" => 8,
60 "aug" => 8,
61 "aug." => 8,
62 "september" => 9,
63 "sep" => 9,
64 "sep." => 9,
65 "sept" => 9,
66 "sept." => 9,
67 "oktober" => 10,
68 "okt" => 10,
69 "okt." => 10,
70 "november" => 11,
71 "nov" => 11,
72 "nov." => 11,
73 "december" => 12,
74 "dec" => 12,
75 "dec." => 12,
76};
77
78pub static INTEGER_WORD_MAP: phf::Map<&'static str, f64> = phf_map! {
80 "een" => 1.0,
81 "één" => 1.0,
82 "twee" => 2.0,
83 "drie" => 3.0,
84 "vier" => 4.0,
85 "vijf" => 5.0,
86 "zes" => 6.0,
87 "zeven" => 7.0,
88 "acht" => 8.0,
89 "negen" => 9.0,
90 "tien" => 10.0,
91 "elf" => 11.0,
92 "twaalf" => 12.0,
93};
94
95pub static TIME_UNIT_MAP: phf::Map<&'static str, TimeUnit> = phf_map! {
97 "sec" => TimeUnit::Second,
98 "seconde" => TimeUnit::Second,
99 "seconden" => TimeUnit::Second,
100 "secondes" => TimeUnit::Second,
101 "min" => TimeUnit::Minute,
102 "mins" => TimeUnit::Minute,
103 "minuut" => TimeUnit::Minute,
104 "minuten" => TimeUnit::Minute,
105 "u" => TimeUnit::Hour,
106 "uur" => TimeUnit::Hour,
107 "uren" => TimeUnit::Hour,
108 "dag" => TimeUnit::Day,
109 "dagen" => TimeUnit::Day,
110 "week" => TimeUnit::Week,
111 "weken" => TimeUnit::Week,
112 "maand" => TimeUnit::Month,
113 "maanden" => TimeUnit::Month,
114 "kwartaal" => TimeUnit::Quarter,
115 "kwartalen" => TimeUnit::Quarter,
116 "jaar" => TimeUnit::Year,
117 "jaren" => TimeUnit::Year,
118};
119
120pub static CASUAL_DATE_MAP: phf::Map<&'static str, CasualDateType> = phf_map! {
122 "nu" => CasualDateType::Now,
123 "vandaag" => CasualDateType::Today,
124 "vanavond" => CasualDateType::Tonight,
125 "morgen" => CasualDateType::Tomorrow,
126 "gisteren" => CasualDateType::Yesterday,
127 "overmorgen" => CasualDateType::Overmorrow,
128 "eergisteren" => CasualDateType::DayBeforeYesterday,
129};
130
131pub static CASUAL_TIME_MAP: phf::Map<&'static str, CasualTimeType> = phf_map! {
133 "middag" => CasualTimeType::Noon,
134 "twaalf uur" => CasualTimeType::Noon,
135 "middernacht" => CasualTimeType::Midnight,
136 "ochtend" => CasualTimeType::Morning,
137 "'s ochtends" => CasualTimeType::Morning,
138 "namiddag" => CasualTimeType::Afternoon,
139 "'s middags" => CasualTimeType::Afternoon,
140 "avond" => CasualTimeType::Evening,
141 "'s avonds" => CasualTimeType::Evening,
142 "nacht" => CasualTimeType::Night,
143 "'s nachts" => CasualTimeType::Night,
144};
145
146pub static RELATIVE_MODIFIER_MAP: phf::Map<&'static str, RelativeModifier> = phf_map! {
148 "deze" => RelativeModifier::This,
149 "dit" => RelativeModifier::This,
150 "volgende" => RelativeModifier::Next,
151 "volgend" => RelativeModifier::Next,
152 "komende" => RelativeModifier::Next,
153 "komend" => RelativeModifier::Next,
154 "afgelopen" => RelativeModifier::Last,
155 "vorige" => RelativeModifier::Last,
156 "vorig" => RelativeModifier::Last,
157 "laatste" => RelativeModifier::Last,
158};
159
160#[inline]
165pub fn get_weekday(s: &str) -> Option<Weekday> {
166 WEEKDAY_MAP.get(s).copied()
167}
168
169#[inline]
170pub fn get_month(s: &str) -> Option<u32> {
171 MONTH_MAP.get(s).copied()
172}
173
174#[inline]
175pub fn get_integer_word(s: &str) -> Option<f64> {
176 INTEGER_WORD_MAP.get(s).copied()
177}
178
179#[inline]
180pub fn get_time_unit(s: &str) -> Option<TimeUnit> {
181 TIME_UNIT_MAP.get(s).copied()
182}
183
184#[inline]
185pub fn get_casual_date(s: &str) -> Option<CasualDateType> {
186 CASUAL_DATE_MAP.get(s).copied()
187}
188
189#[inline]
190pub fn get_casual_time(s: &str) -> Option<CasualTimeType> {
191 CASUAL_TIME_MAP.get(s).copied()
192}
193
194#[inline]
195pub fn get_relative_modifier(s: &str) -> Option<RelativeModifier> {
196 RELATIVE_MODIFIER_MAP.get(s).copied()
197}
198
199pub fn parse_number_pattern(text: &str) -> f64 {
201 let lower = text.to_lowercase();
202
203 if let Some(val) = get_integer_word(&lower) {
204 return val;
205 }
206
207 match lower.as_str() {
208 s if s.contains("paar") => return 2.0,
209 s if s.contains("half") => return 0.5,
210 s if s.contains("enkele") || s.contains("enkel") => return 3.0,
211 s if s.contains("meerdere") || s.contains("verschillende") => return 7.0,
212 _ => {}
213 }
214
215 text.parse::<f64>().unwrap_or(0.0)
216}