whichtime_sys/dictionaries/
es.rs1use super::{CasualDateType, CasualTimeType, RelativeModifier, TimeUnit, Weekday};
4use phf::phf_map;
5
6pub static WEEKDAY_MAP: phf::Map<&'static str, Weekday> = phf_map! {
8 "domingo" => Weekday::Sunday,
9 "dom" => Weekday::Sunday,
10 "dom." => Weekday::Sunday,
11 "lunes" => Weekday::Monday,
12 "lun" => Weekday::Monday,
13 "lun." => Weekday::Monday,
14 "martes" => Weekday::Tuesday,
15 "mar" => Weekday::Tuesday,
16 "mar." => Weekday::Tuesday,
17 "miércoles" => Weekday::Wednesday,
18 "miercoles" => Weekday::Wednesday,
19 "mié" => Weekday::Wednesday,
20 "mie" => Weekday::Wednesday,
21 "mié." => Weekday::Wednesday,
22 "mie." => Weekday::Wednesday,
23 "jueves" => Weekday::Thursday,
24 "jue" => Weekday::Thursday,
25 "jue." => Weekday::Thursday,
26 "viernes" => Weekday::Friday,
27 "vie" => Weekday::Friday,
28 "vie." => Weekday::Friday,
29 "sábado" => Weekday::Saturday,
30 "sabado" => Weekday::Saturday,
31 "sáb" => Weekday::Saturday,
32 "sab" => Weekday::Saturday,
33 "sáb." => Weekday::Saturday,
34 "sab." => Weekday::Saturday,
35};
36
37pub static MONTH_MAP: phf::Map<&'static str, u32> = phf_map! {
39 "enero" => 1,
40 "ene" => 1,
41 "ene." => 1,
42 "febrero" => 2,
43 "feb" => 2,
44 "feb." => 2,
45 "marzo" => 3,
46 "mar" => 3,
47 "mar." => 3,
48 "abril" => 4,
49 "abr" => 4,
50 "abr." => 4,
51 "mayo" => 5,
52 "may" => 5,
53 "may." => 5,
54 "junio" => 6,
55 "jun" => 6,
56 "jun." => 6,
57 "julio" => 7,
58 "jul" => 7,
59 "jul." => 7,
60 "agosto" => 8,
61 "ago" => 8,
62 "ago." => 8,
63 "septiembre" => 9,
64 "setiembre" => 9,
65 "sep" => 9,
66 "sep." => 9,
67 "set" => 9,
68 "set." => 9,
69 "octubre" => 10,
70 "oct" => 10,
71 "oct." => 10,
72 "noviembre" => 11,
73 "nov" => 11,
74 "nov." => 11,
75 "diciembre" => 12,
76 "dic" => 12,
77 "dic." => 12,
78};
79
80pub static INTEGER_WORD_MAP: phf::Map<&'static str, f64> = phf_map! {
82 "uno" => 1.0,
83 "una" => 1.0,
84 "un" => 1.0,
85 "dos" => 2.0,
86 "tres" => 3.0,
87 "cuatro" => 4.0,
88 "cinco" => 5.0,
89 "seis" => 6.0,
90 "siete" => 7.0,
91 "ocho" => 8.0,
92 "nueve" => 9.0,
93 "diez" => 10.0,
94 "once" => 11.0,
95 "doce" => 12.0,
96 "trece" => 13.0,
97};
98
99pub static TIME_UNIT_MAP: phf::Map<&'static str, TimeUnit> = phf_map! {
101 "sec" => TimeUnit::Second,
102 "segundo" => TimeUnit::Second,
103 "segundos" => TimeUnit::Second,
104 "min" => TimeUnit::Minute,
105 "mins" => TimeUnit::Minute,
106 "minuto" => TimeUnit::Minute,
107 "minutos" => TimeUnit::Minute,
108 "h" => TimeUnit::Hour,
109 "hr" => TimeUnit::Hour,
110 "hrs" => TimeUnit::Hour,
111 "hora" => TimeUnit::Hour,
112 "horas" => TimeUnit::Hour,
113 "día" => TimeUnit::Day,
114 "dia" => TimeUnit::Day,
115 "días" => TimeUnit::Day,
116 "dias" => TimeUnit::Day,
117 "semana" => TimeUnit::Week,
118 "semanas" => TimeUnit::Week,
119 "mes" => TimeUnit::Month,
120 "meses" => TimeUnit::Month,
121 "trimestre" => TimeUnit::Quarter,
122 "trimestres" => TimeUnit::Quarter,
123 "año" => TimeUnit::Year,
124 "ano" => TimeUnit::Year,
125 "años" => TimeUnit::Year,
126 "anos" => TimeUnit::Year,
127};
128
129pub static CASUAL_DATE_MAP: phf::Map<&'static str, CasualDateType> = phf_map! {
131 "ahora" => CasualDateType::Now,
132 "hoy" => CasualDateType::Today,
133 "esta noche" => CasualDateType::Tonight,
134 "esta mañana" => CasualDateType::ThisMorning,
135 "esta manana" => CasualDateType::ThisMorning,
136 "esta tarde" => CasualDateType::ThisAfternoon,
137 "mañana" => CasualDateType::Tomorrow,
138 "manana" => CasualDateType::Tomorrow,
139 "ayer" => CasualDateType::Yesterday,
140 "pasado mañana" => CasualDateType::Overmorrow,
141 "pasado manana" => CasualDateType::Overmorrow,
142 "anteayer" => CasualDateType::DayBeforeYesterday,
143 "antes de ayer" => CasualDateType::DayBeforeYesterday,
144};
145
146pub static CASUAL_TIME_MAP: phf::Map<&'static str, CasualTimeType> = phf_map! {
148 "mediodía" => CasualTimeType::Noon,
149 "mediodia" => CasualTimeType::Noon,
150 "medianoche" => CasualTimeType::Midnight,
151 "mañana" => CasualTimeType::Morning,
152 "manana" => CasualTimeType::Morning,
153 "tarde" => CasualTimeType::Afternoon,
154 "noche" => CasualTimeType::Night,
155};
156
157pub static RELATIVE_MODIFIER_MAP: phf::Map<&'static str, RelativeModifier> = phf_map! {
159 "este" => RelativeModifier::This,
160 "esta" => RelativeModifier::This,
161 "estos" => RelativeModifier::This,
162 "estas" => RelativeModifier::This,
163 "próximo" => RelativeModifier::Next,
164 "proximo" => RelativeModifier::Next,
165 "próxima" => RelativeModifier::Next,
166 "proxima" => RelativeModifier::Next,
167 "siguiente" => RelativeModifier::Next,
168 "pasado" => RelativeModifier::Last,
169 "pasada" => RelativeModifier::Last,
170 "último" => RelativeModifier::Last,
171 "ultimo" => RelativeModifier::Last,
172 "última" => RelativeModifier::Last,
173 "ultima" => RelativeModifier::Last,
174 "anterior" => RelativeModifier::Last,
175};
176
177#[inline]
182pub fn get_weekday(s: &str) -> Option<Weekday> {
183 WEEKDAY_MAP.get(s).copied()
184}
185
186#[inline]
187pub fn get_month(s: &str) -> Option<u32> {
188 MONTH_MAP.get(s).copied()
189}
190
191#[inline]
192pub fn get_integer_word(s: &str) -> Option<f64> {
193 INTEGER_WORD_MAP.get(s).copied()
194}
195
196#[inline]
197pub fn get_time_unit(s: &str) -> Option<TimeUnit> {
198 TIME_UNIT_MAP.get(s).copied()
199}
200
201#[inline]
202pub fn get_casual_date(s: &str) -> Option<CasualDateType> {
203 CASUAL_DATE_MAP.get(s).copied()
204}
205
206#[inline]
207pub fn get_casual_time(s: &str) -> Option<CasualTimeType> {
208 CASUAL_TIME_MAP.get(s).copied()
209}
210
211#[inline]
212pub fn get_relative_modifier(s: &str) -> Option<RelativeModifier> {
213 RELATIVE_MODIFIER_MAP.get(s).copied()
214}
215
216pub fn parse_number_pattern(text: &str) -> f64 {
218 let lower = text.to_lowercase();
219
220 if let Some(val) = get_integer_word(&lower) {
221 return val;
222 }
223
224 match lower.as_str() {
225 s if s.contains("algunos") || s.contains("unos") => return 3.0,
226 s if s.contains("media") => return 0.5,
227 _ => {}
228 }
229
230 text.parse::<f64>().unwrap_or(0.0)
231}