cronex 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -13
- data/.travis.yml +3 -0
- data/CHANGELOG.md +6 -2
- data/README.md +13 -2
- data/lib/cronex/errors.rb +1 -1
- data/lib/cronex/version.rb +1 -1
- data/resources/resources_en.yml +19 -19
- data/resources/resources_fr.yml +24 -24
- data/resources/resources_pt_BR.yml +19 -19
- data/resources/resources_ro.yml +75 -0
- data/resources/resources_ru.yml +75 -0
- data/spec/exp_descriptor_en_spec.rb +5 -0
- data/spec/exp_descriptor_fr_spec.rb +87 -83
- data/spec/exp_descriptor_pt_BR_spec.rb +87 -83
- data/spec/exp_descriptor_ro_spec.rb +382 -0
- data/spec/exp_descriptor_ru_spec.rb +382 -0
- data/spec/spec_helper.rb +0 -8
- metadata +23 -16
@@ -4,374 +4,378 @@ require 'cronex'
|
|
4
4
|
module Cronex
|
5
5
|
describe ExpressionDescriptor do
|
6
6
|
|
7
|
+
def desc(expression, opts = {})
|
8
|
+
Cronex::ExpressionDescriptor.new(expression, opts, 'pt_BR').description
|
9
|
+
end
|
10
|
+
|
7
11
|
let(:opts) { { zero_based_dow: false } }
|
8
12
|
|
9
13
|
it 'every second' do
|
10
|
-
expect(
|
14
|
+
expect(desc('* * * * * *')).to eq('A cada segundo')
|
11
15
|
end
|
12
16
|
|
13
17
|
it 'every 45 seconds' do
|
14
|
-
expect(
|
18
|
+
expect(desc('*/45 * * * * *')).to eq('A cada 45 segundos')
|
15
19
|
end
|
16
20
|
|
17
21
|
it 'minute span' do
|
18
|
-
expect(
|
22
|
+
expect(desc('0-10 11 * * *')).to eq('A cada minuto entre 11:00 AM e 11:10 AM')
|
19
23
|
end
|
20
24
|
|
21
25
|
context 'every minute' do
|
22
26
|
it 'every minute' do
|
23
|
-
expect(
|
27
|
+
expect(desc('* * * * *')).to eq('A cada minuto')
|
24
28
|
end
|
25
29
|
|
26
30
|
it 'every minute */1' do
|
27
|
-
expect(
|
31
|
+
expect(desc('*/1 * * * *')).to eq('A cada minuto')
|
28
32
|
end
|
29
33
|
|
30
34
|
it 'every minute 0 0/1' do
|
31
|
-
expect(
|
35
|
+
expect(desc('0 0/1 * * * ?')).to eq('A cada minuto')
|
32
36
|
end
|
33
37
|
end
|
34
38
|
|
35
39
|
context 'every X minutes:' do
|
36
40
|
it 'every 5 minutes' do
|
37
|
-
expect(
|
41
|
+
expect(desc('*/5 * * * *')).to eq('A cada 5 minutos')
|
38
42
|
end
|
39
43
|
|
40
44
|
it 'every 5 minute 0 */5' do
|
41
|
-
expect(
|
45
|
+
expect(desc('0 */5 * * * *')).to eq('A cada 5 minutos')
|
42
46
|
end
|
43
47
|
|
44
48
|
it 'every 10 minutes 0 0/10' do
|
45
|
-
expect(
|
49
|
+
expect(desc('0 0/10 * * * ?')).to eq('A cada 10 minutos')
|
46
50
|
end
|
47
51
|
end
|
48
52
|
|
49
53
|
context 'every hour:' do
|
50
54
|
it 'every hour 0 0' do
|
51
|
-
expect(
|
55
|
+
expect(desc('0 0 * * * ?')).to eq('A cada hora')
|
52
56
|
end
|
53
57
|
|
54
58
|
it 'every hour 0 0 0/1' do
|
55
|
-
expect(
|
59
|
+
expect(desc('0 0 0/1 * * ?')).to eq('A cada hora')
|
56
60
|
end
|
57
61
|
end
|
58
62
|
|
59
63
|
context 'daily:' do
|
60
64
|
it 'daily at /\d\d/:/\d\d/' do
|
61
|
-
expect(
|
65
|
+
expect(desc('30 11 * * *')).to eq('Às 11:30 AM')
|
62
66
|
end
|
63
67
|
|
64
68
|
it 'daily at /\d/:/\d/' do
|
65
|
-
expect(
|
69
|
+
expect(desc('9 8 * * *')).to eq('Às 8:09 AM')
|
66
70
|
end
|
67
71
|
|
68
72
|
it 'daily at /0[89]/:/0[89]/' do
|
69
|
-
expect(
|
73
|
+
expect(desc('09 08 * * *')).to eq('Às 8:09 AM')
|
70
74
|
end
|
71
75
|
|
72
76
|
it 'daily at /0[1-7]/ /0[1-7/' do
|
73
|
-
expect(
|
77
|
+
expect(desc('02 01 * * *')).to eq('Às 1:02 AM')
|
74
78
|
end
|
75
79
|
end
|
76
80
|
|
77
81
|
context 'time of day certain days of week:' do
|
78
82
|
it 'time of day on MON-FRI' do
|
79
|
-
expect(
|
83
|
+
expect(desc('0 23 ? * MON-FRI')).to eq('Às 11:00 PM, de segunda-feira a sexta-feira')
|
80
84
|
end
|
81
85
|
|
82
86
|
it 'time of day on 1-5' do
|
83
|
-
expect(
|
87
|
+
expect(desc('30 11 * * 1-5')).to eq('Às 11:30 AM, de segunda-feira a sexta-feira')
|
84
88
|
end
|
85
89
|
end
|
86
90
|
|
87
91
|
it 'one month todo(a)' do
|
88
|
-
expect(
|
92
|
+
expect(desc('* * * 3 *')).to eq('A cada minuto, em março')
|
89
93
|
end
|
90
94
|
|
91
95
|
it 'two months todo(a)' do
|
92
|
-
expect(
|
96
|
+
expect(desc('* * * 3,6 *')).to eq('A cada minuto, em março e junho')
|
93
97
|
end
|
94
98
|
|
95
99
|
it 'two times each afternoon' do
|
96
|
-
expect(
|
100
|
+
expect(desc('30 14,16 * * *')).to eq('Às 2:30 PM e 4:30 PM')
|
97
101
|
end
|
98
102
|
|
99
103
|
it 'three times daily' do
|
100
|
-
expect(
|
104
|
+
expect(desc('30 6,14,16 * * *')).to eq('Às 6:30 AM, 2:30 PM e 4:30 PM')
|
101
105
|
end
|
102
106
|
|
103
107
|
context 'once a week:' do
|
104
108
|
it 'once a week 0' do
|
105
|
-
expect(
|
109
|
+
expect(desc('46 9 * * 0')).to eq('Às 9:46 AM, todo(a) domingo')
|
106
110
|
end
|
107
111
|
|
108
112
|
it 'once a week SUN' do
|
109
|
-
expect(
|
113
|
+
expect(desc('46 9 * * SUN')).to eq('Às 9:46 AM, todo(a) domingo')
|
110
114
|
end
|
111
115
|
|
112
116
|
it 'once a week 7' do
|
113
|
-
expect(
|
117
|
+
expect(desc('46 9 * * 7')).to eq('Às 9:46 AM, todo(a) domingo')
|
114
118
|
end
|
115
119
|
|
116
120
|
it 'once a week 1' do
|
117
|
-
expect(
|
121
|
+
expect(desc('46 9 * * 1')).to eq('Às 9:46 AM, todo(a) segunda-feira')
|
118
122
|
end
|
119
123
|
|
120
124
|
it 'once a week 6' do
|
121
|
-
expect(
|
125
|
+
expect(desc('46 9 * * 6')).to eq('Às 9:46 AM, todo(a) sábado')
|
122
126
|
end
|
123
127
|
end
|
124
128
|
|
125
129
|
context 'once a week non zero based:' do
|
126
130
|
it 'once a week 1' do
|
127
|
-
expect(
|
131
|
+
expect(desc('46 9 * * 1', opts)).to eq('Às 9:46 AM, todo(a) domingo')
|
128
132
|
end
|
129
133
|
|
130
134
|
it 'once a week SUN' do
|
131
|
-
expect(
|
135
|
+
expect(desc('46 9 * * SUN', opts)).to eq('Às 9:46 AM, todo(a) domingo')
|
132
136
|
end
|
133
137
|
|
134
138
|
it 'once a week 2' do
|
135
|
-
expect(
|
139
|
+
expect(desc('46 9 * * 2', opts)).to eq('Às 9:46 AM, todo(a) segunda-feira')
|
136
140
|
end
|
137
141
|
|
138
142
|
it 'once a week 7' do
|
139
|
-
expect(
|
143
|
+
expect(desc('46 9 * * 7', opts)).to eq('Às 9:46 AM, todo(a) sábado')
|
140
144
|
end
|
141
145
|
end
|
142
146
|
|
143
147
|
context 'twice a week:' do
|
144
148
|
it 'twice a week 1,2' do
|
145
|
-
expect(
|
149
|
+
expect(desc('46 9 * * 1,2')).to eq('Às 9:46 AM, todo(a) segunda-feira e terça-feira')
|
146
150
|
end
|
147
151
|
|
148
152
|
it 'twice a week MON,TUE' do
|
149
|
-
expect(
|
153
|
+
expect(desc('46 9 * * MON,TUE')).to eq('Às 9:46 AM, todo(a) segunda-feira e terça-feira')
|
150
154
|
end
|
151
155
|
|
152
156
|
it 'twice a week 0,6' do
|
153
|
-
expect(
|
157
|
+
expect(desc('46 9 * * 0,6')).to eq('Às 9:46 AM, todo(a) domingo e sábado')
|
154
158
|
end
|
155
159
|
|
156
160
|
it 'twice a week 6,7' do
|
157
|
-
expect(
|
161
|
+
expect(desc('46 9 * * 6,7')).to eq('Às 9:46 AM, todo(a) sábado e domingo')
|
158
162
|
end
|
159
163
|
end
|
160
164
|
|
161
165
|
context 'twice a week non zero based:' do
|
162
166
|
it 'twice a week 1,2' do
|
163
|
-
expect(
|
167
|
+
expect(desc('46 9 * * 1,2', opts)).to eq('Às 9:46 AM, todo(a) domingo e segunda-feira')
|
164
168
|
end
|
165
169
|
|
166
170
|
it 'twice a week SUN,MON' do
|
167
|
-
expect(
|
171
|
+
expect(desc('46 9 * * SUN,MON', opts)).to eq('Às 9:46 AM, todo(a) domingo e segunda-feira')
|
168
172
|
end
|
169
173
|
|
170
174
|
it 'twice a week 6,7' do
|
171
|
-
expect(
|
175
|
+
expect(desc('46 9 * * 6,7', opts)).to eq('Às 9:46 AM, todo(a) sexta-feira e sábado')
|
172
176
|
end
|
173
177
|
end
|
174
178
|
|
175
179
|
it 'day of month' do
|
176
|
-
expect(
|
180
|
+
expect(desc('23 12 15 * *')).to eq('Às 12:23 PM, no dia 15 do mês')
|
177
181
|
end
|
178
182
|
|
179
183
|
it 'day of month ignores day of week' do
|
180
|
-
expect(
|
184
|
+
expect(desc('23 12 15 * SUN')).to eq('Às 12:23 PM, no dia 15 do mês')
|
181
185
|
end
|
182
186
|
|
183
187
|
it 'month name' do
|
184
|
-
expect(
|
188
|
+
expect(desc('23 12 * JAN *')).to eq('Às 12:23 PM, em janeiro')
|
185
189
|
end
|
186
190
|
|
187
191
|
it 'day of month with question mark' do
|
188
|
-
expect(
|
192
|
+
expect(desc('23 12 ? JAN *')).to eq('Às 12:23 PM, em janeiro')
|
189
193
|
end
|
190
194
|
|
191
195
|
it 'month name range 2' do
|
192
|
-
expect(
|
196
|
+
expect(desc('23 12 * JAN-FEB *')).to eq('Às 12:23 PM, de janeiro a fevereiro')
|
193
197
|
end
|
194
198
|
|
195
199
|
it 'month name range 3' do
|
196
|
-
expect(
|
200
|
+
expect(desc('23 12 * JAN-MAR *')).to eq('Às 12:23 PM, de janeiro a março')
|
197
201
|
end
|
198
202
|
|
199
203
|
it 'day of week name' do
|
200
|
-
expect(
|
204
|
+
expect(desc('23 12 * * SUN')).to eq('Às 12:23 PM, todo(a) domingo')
|
201
205
|
end
|
202
206
|
|
203
207
|
context 'day of week range:' do
|
204
208
|
it 'day of week range MON-FRI' do
|
205
|
-
expect(
|
209
|
+
expect(desc('*/5 15 * * MON-FRI')).to eq('A cada 5 minutos, 3:00 PM, de segunda-feira a sexta-feira')
|
206
210
|
end
|
207
211
|
|
208
212
|
it 'day of week range 0-6' do
|
209
|
-
expect(
|
213
|
+
expect(desc('*/5 15 * * 0-6')).to eq('A cada 5 minutos, 3:00 PM, de domingo a sábado')
|
210
214
|
end
|
211
215
|
|
212
216
|
it 'day of week range 6-7' do
|
213
|
-
expect(
|
217
|
+
expect(desc('*/5 15 * * 6-7')).to eq('A cada 5 minutos, 3:00 PM, de sábado a domingo')
|
214
218
|
end
|
215
219
|
end
|
216
220
|
|
217
221
|
context 'day of week once in month:' do
|
218
222
|
it 'day of week once MON#3' do
|
219
|
-
expect(
|
223
|
+
expect(desc('* * * * MON#3')).to eq('A cada minuto, no(a) terceiro(a) segunda-feira do mês')
|
220
224
|
end
|
221
225
|
|
222
226
|
it 'day of week once 0#3' do
|
223
|
-
expect(
|
227
|
+
expect(desc('* * * * 0#3')).to eq('A cada minuto, no(a) terceiro(a) domingo do mês')
|
224
228
|
end
|
225
229
|
end
|
226
230
|
|
227
231
|
context 'last day of week of the month:' do
|
228
232
|
it 'last day of week 4L' do
|
229
|
-
expect(
|
233
|
+
expect(desc('* * * * 4L')).to eq('A cada minuto, no(a) último(a) quinta-feira do mês')
|
230
234
|
end
|
231
235
|
|
232
236
|
it 'last day of week 0L' do
|
233
|
-
expect(
|
237
|
+
expect(desc('* * * * 0L')).to eq('A cada minuto, no(a) último(a) domingo do mês')
|
234
238
|
end
|
235
239
|
end
|
236
240
|
|
237
241
|
it 'last day of the month' do
|
238
|
-
expect(
|
242
|
+
expect(desc('*/5 * L JAN *')).to eq('A cada 5 minutos, no último dia do mês, em janeiro')
|
239
243
|
end
|
240
244
|
|
241
245
|
it 'time of day with seconds' do
|
242
|
-
expect(
|
246
|
+
expect(desc('30 02 14 * * *')).to eq('Às 2:02:30 PM')
|
243
247
|
end
|
244
248
|
|
245
249
|
it 'second intervals' do
|
246
|
-
expect(
|
250
|
+
expect(desc('5-10 * * * * *')).to eq('Entre 5 e 10 segundos após o minuto')
|
247
251
|
end
|
248
252
|
|
249
253
|
it 'second minutes hours intervals' do
|
250
|
-
expect(
|
254
|
+
expect(desc('5-10 30-35 10-12 * * *')).to eq(
|
251
255
|
'Entre 5 e 10 segundos após o minuto, entre 30 e 35 minutos após a hora, entre 10:00 AM e 12:59 PM')
|
252
256
|
end
|
253
257
|
|
254
258
|
it 'every 5 minutes at 30 seconds' do
|
255
|
-
expect(
|
259
|
+
expect(desc('30 */5 * * * *')).to eq('30 segundos após o minuto, a cada 5 minutos')
|
256
260
|
end
|
257
261
|
|
258
262
|
it 'minutes past the hour range' do
|
259
|
-
expect(
|
263
|
+
expect(desc('0 30 10-13 ? * WED,FRI')).to eq(
|
260
264
|
'30 minutos após a hora, entre 10:00 AM e 1:59 PM, todo(a) quarta-feira e sexta-feira')
|
261
265
|
end
|
262
266
|
|
263
267
|
it 'seconds past the minute interval' do
|
264
|
-
expect(
|
268
|
+
expect(desc('10 0/5 * * * ?')).to eq('10 segundos após o minuto, a cada 5 minutos')
|
265
269
|
end
|
266
270
|
|
267
271
|
it 'between with interval' do
|
268
|
-
expect(
|
272
|
+
expect(desc('2-59/3 1,9,22 11-26 1-6 ?')).to eq(
|
269
273
|
'A cada 3 minutos, entre 02 e 59 minutos após a hora, 1:00 AM, 9:00 AM e 10:00 PM, entre os dias 11 e 26 do mês, de janeiro a junho')
|
270
274
|
end
|
271
275
|
|
272
276
|
it 'recurring first of month' do
|
273
|
-
expect(
|
277
|
+
expect(desc('0 0 6 1/1 * ?')).to eq('Às 6:00 AM')
|
274
278
|
end
|
275
279
|
|
276
280
|
it 'minutes past the hour' do
|
277
|
-
expect(
|
281
|
+
expect(desc('0 5 0/1 * * ?')).to eq('05 minutos após a hora')
|
278
282
|
end
|
279
283
|
|
280
284
|
it 'every past the hour' do
|
281
|
-
expect(
|
285
|
+
expect(desc('0 0,5,10,15,20,25,30,35,40,45,50,55 * ? * *')).to eq(
|
282
286
|
'00, 05, 10, 15, 20, 25, 30, 35, 40, 45, 50 e 55 minutos após a hora')
|
283
287
|
end
|
284
288
|
|
285
289
|
it 'every x minute past the hour with interval' do
|
286
|
-
expect(
|
290
|
+
expect(desc('0 0-30/2 17 ? * MON-FRI')).to eq(
|
287
291
|
'A cada 2 minutos, entre 00 e 30 minutos após a hora, 5:00 PM, de segunda-feira a sexta-feira')
|
288
292
|
end
|
289
293
|
|
290
294
|
it 'one year only with seconds' do
|
291
|
-
expect(
|
295
|
+
expect(desc('* * * * * * 2013')).to eq('A cada segundo, em 2013')
|
292
296
|
end
|
293
297
|
|
294
298
|
it 'one year todo(a) without seconds' do
|
295
|
-
expect(
|
299
|
+
expect(desc('* * * * * 2013')).to eq('A cada minuto, em 2013')
|
296
300
|
end
|
297
301
|
|
298
302
|
it 'two years todo(a)' do
|
299
|
-
expect(
|
303
|
+
expect(desc('* * * * * 2013,2014')).to eq('A cada minuto, em 2013 e 2014')
|
300
304
|
end
|
301
305
|
|
302
306
|
it 'year range 2' do
|
303
|
-
expect(
|
307
|
+
expect(desc('23 12 * JAN-FEB * 2013-2014')).to eq('Às 12:23 PM, de janeiro a fevereiro, de 2013 a 2014')
|
304
308
|
end
|
305
309
|
|
306
310
|
it 'year range 3' do
|
307
|
-
expect(
|
311
|
+
expect(desc('23 12 * JAN-MAR * 2013-2015')).to eq('Às 12:23 PM, de janeiro a março, de 2013 a 2015')
|
308
312
|
end
|
309
313
|
|
310
314
|
context 'multi part range seconds:' do
|
311
315
|
it 'multi part range seconds 2,4-5' do
|
312
|
-
expect(
|
316
|
+
expect(desc('2,4-5 1 * * *')).to eq('Entre 02,04 e 05 minutos após a hora, 1:00 AM')
|
313
317
|
end
|
314
318
|
|
315
319
|
it 'multi part range seconds 2,26-28' do
|
316
|
-
expect(
|
320
|
+
expect(desc('2,26-28 18 * * *')).to eq('Entre 02,26 e 28 minutos após a hora, 6:00 PM')
|
317
321
|
end
|
318
322
|
end
|
319
323
|
|
320
324
|
context 'minutes past the hour:' do
|
321
325
|
it 'minutes past the hour 5,10' do
|
322
|
-
expect(
|
326
|
+
expect(desc('5,10 0 * * *')).to eq('05 e 10 minutos após a hora')
|
323
327
|
end
|
324
328
|
|
325
329
|
it 'minutes past the hour 5,10 day 2' do
|
326
|
-
expect(
|
330
|
+
expect(desc('5,10 0 2 * *')).to eq('05 e 10 minutos após a hora, no dia 2 do mês')
|
327
331
|
end
|
328
332
|
|
329
333
|
it 'minutes past the hour 5/10 day 2' do
|
330
|
-
expect(
|
334
|
+
expect(desc('5/10 0 2 * *')).to eq('A cada 10 minutos, iniciando 05 minutos após a hora, no dia 2 do mês')
|
331
335
|
end
|
332
336
|
end
|
333
337
|
|
334
338
|
context 'seconds past the minute:' do
|
335
339
|
it 'seconds past the minute 5,6' do
|
336
|
-
expect(
|
340
|
+
expect(desc('5,6 0 0 * * *')).to eq('5 e 6 segundos após o minuto')
|
337
341
|
end
|
338
342
|
|
339
343
|
it 'seconds past the minute 5,6 at 1' do
|
340
|
-
expect(
|
344
|
+
expect(desc('5,6 0 1 * * *')).to eq('5 e 6 segundos após o minuto, 1:00 AM')
|
341
345
|
end
|
342
346
|
|
343
347
|
it 'seconds past the minute 5,6 day 2' do
|
344
|
-
expect(
|
348
|
+
expect(desc('5,6 0 0 2 * *')).to eq('5 e 6 segundos após o minuto, no dia 2 do mês')
|
345
349
|
end
|
346
350
|
end
|
347
351
|
|
348
352
|
context 'increments starting at X > 1:' do
|
349
353
|
it 'second increments' do
|
350
|
-
expect(
|
354
|
+
expect(desc('5/15 0 * * * *')).to eq('A cada 15 segundos, iniciando 5 segundos após o minuto')
|
351
355
|
end
|
352
356
|
|
353
357
|
it 'minute increments' do
|
354
|
-
expect(
|
358
|
+
expect(desc('30/10 * * * *')).to eq('A cada 10 minutos, iniciando 30 minutos após a hora')
|
355
359
|
end
|
356
360
|
|
357
361
|
it 'hour increments' do
|
358
|
-
expect(
|
362
|
+
expect(desc('0 30 2/6 * * ?')).to eq('30 minutos após a hora, a cada 6 horas, iniciando 2:00 AM')
|
359
363
|
end
|
360
364
|
|
361
365
|
it 'day of month increments' do
|
362
|
-
expect(
|
366
|
+
expect(desc('0 30 8 2/7 * *')).to eq('Às 8:30 AM, a cada 7 dias, iniciando no dia 2 do mês')
|
363
367
|
end
|
364
368
|
|
365
369
|
it 'day of week increments' do
|
366
|
-
expect(
|
370
|
+
expect(desc('0 30 11 * * 2/2')).to eq('Às 11:30 AM, a cada 2 dias da semana, iniciando terça-feira')
|
367
371
|
end
|
368
372
|
|
369
373
|
it 'month increments' do
|
370
|
-
expect(
|
374
|
+
expect(desc('0 20 10 * 2/3 THU')).to eq('Às 10:20 AM, todo(a) quinta-feira, a cada 3 mêses, iniciando em fevereiro')
|
371
375
|
end
|
372
376
|
|
373
377
|
it 'year increments' do
|
374
|
-
expect(
|
378
|
+
expect(desc('0 0 0 1 MAR * 2010/5')).to eq('Às 0:00 AM, no dia 1 do mês, em março, a cada 5 anos, iniciando em 2010')
|
375
379
|
end
|
376
380
|
end
|
377
381
|
end
|