cronex 0.4.0 → 0.5.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 +8 -8
- data/CHANGELOG.md +3 -0
- data/README.md +5 -0
- data/lib/cronex/version.rb +1 -1
- data/resources/resources_fr.yml +75 -0
- data/spec/exp_descriptor_fr_spec.rb +378 -0
- data/spec/spec_helper.rb +4 -0
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
YzBmOGNiZWIzNzUxMmE4NDIzN2Q4YjU1ZGQyZDQ1OWU2ZjdlODBlOQ==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
M2Y5NThhMDZhYWE5NGU0ODYxM2FiMDBhNjc1MjVhNDg5YjkzNGJmMg==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
OWVlYjJmOGVlYTZmYTI4ZDU3ZDAwOTNlYmE3YmFiZDZlNTczNWJlMjQ3NDQ1
|
|
10
|
+
MDNkMDEwYmMwMzBiODYyODQ1ZmI3ZWE5Mzg1MDMwZjkwMzdiMTIyNzQ0Yzlm
|
|
11
|
+
MTM1MWRmZjNlNzQ2NDcxZTM3YmI1MDY0ODAzZTU0N2Q4MGNkZjk=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
MmNkZjljNDUwYTYxYzdkMzliZjg4ZGIzZWNhZGUyNjNmZWM1MjZhMzE4ZWVi
|
|
14
|
+
ZGNjZmRhOWYzMmRlNDVmMjliYWEzZjFiOGIwYjE0ODU3Y2NmNDYwMGUzOWY2
|
|
15
|
+
NjQwOTVjYmE5YmViYWVhOGUyODBmYjg5MWYwMjNhYTUzM2NlMzE=
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
|
@@ -44,6 +44,11 @@ Or install it yourself as:
|
|
|
44
44
|
|
|
45
45
|
Cronex::ExpressionDescriptor.new('*/5 15 * * 1-5', zero_based_dow: false).description
|
|
46
46
|
=> Every 5 minutes, at 3:00 PM, Sunday through Thursday
|
|
47
|
+
|
|
48
|
+
#### Localization
|
|
49
|
+
|
|
50
|
+
Cronex::ExpressionDescriptor.new('30 2 * 2 1-5', {}, 'fr').description
|
|
51
|
+
=> À 2:30 AM, lundi à vendredi, seulement en février
|
|
47
52
|
|
|
48
53
|
See spec tests for more examples.
|
|
49
54
|
|
data/lib/cronex/version.rb
CHANGED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# resources_fr.yml
|
|
2
|
+
---
|
|
3
|
+
expression_empty_exception: "L'expression ne peut pas être nulle ou vide"
|
|
4
|
+
interval_description_format: 'tous les %s jours de la semaine'
|
|
5
|
+
between_description_format: '%s à %s'
|
|
6
|
+
between_weekday_description_format: '%s à %s'
|
|
7
|
+
on_the_day_of_the_month: 'le {{nth}} %s du mois'
|
|
8
|
+
on_the_of_the_month: 'le %s du mois'
|
|
9
|
+
on_the_last_of_the_month: 'le dernier %s du mois'
|
|
10
|
+
on_the_last_day_of_the_month: 'le dernier jour du mois'
|
|
11
|
+
on_the_last_weekday_of_the_month: 'le dernier jour en semaine du mois'
|
|
12
|
+
between_days_of_the_month: 'entre le %s et le %s du mois'
|
|
13
|
+
seconds_through_past_the_minute: 'secondes %s à %s après la minute'
|
|
14
|
+
between_x_and_y: 'entre %s et %s'
|
|
15
|
+
past_the_hour: "après l'heure"
|
|
16
|
+
at_x_seconds_past_the_minute: 'à %s secondes après la minute'
|
|
17
|
+
minutes_through_past_the_hour: "minutes %s à %s après l'heure"
|
|
18
|
+
on_day_of_the_month: 'le %s de chaque mois'
|
|
19
|
+
first_weekday: 'premier jour de la semaine'
|
|
20
|
+
weekday_nearest_day: 'le jour de semaine le plus proche du %s'
|
|
21
|
+
starting: 'commence'
|
|
22
|
+
only_on: 'seulement le %s'
|
|
23
|
+
only_in: 'seulement en %s'
|
|
24
|
+
every_x_seconds: 'toutes les %s secondes'
|
|
25
|
+
every_minute_between: 'Chaque minute entre %s et %s'
|
|
26
|
+
every_second: 'Chaque seconde'
|
|
27
|
+
every_minute: 'chaque minute'
|
|
28
|
+
every_1_minute: 'toutes les 1 minutes'
|
|
29
|
+
every_hour: 'chaque heure'
|
|
30
|
+
every_1_hour: 'toutes les 1 heures'
|
|
31
|
+
every_day: 'chaque jour'
|
|
32
|
+
every_1_day: 'tous les 1 jours'
|
|
33
|
+
every_year: 'chaque année'
|
|
34
|
+
every_x: 'tous les %s'
|
|
35
|
+
at_x: 'à %s'
|
|
36
|
+
on_x: 'le %s'
|
|
37
|
+
in_x: 'en %s'
|
|
38
|
+
first: premier
|
|
39
|
+
second: second
|
|
40
|
+
third: troisieme
|
|
41
|
+
fourth: quatrieme
|
|
42
|
+
fifth: cinquieme
|
|
43
|
+
time_pm: PM
|
|
44
|
+
time_am: AM
|
|
45
|
+
and: et
|
|
46
|
+
at: À
|
|
47
|
+
day: jour
|
|
48
|
+
days: jours
|
|
49
|
+
hour: heure
|
|
50
|
+
hours: heures
|
|
51
|
+
minute: minute
|
|
52
|
+
minutes: minutes
|
|
53
|
+
month: mois
|
|
54
|
+
months: mois
|
|
55
|
+
year: an
|
|
56
|
+
years: ans
|
|
57
|
+
monday: lundi
|
|
58
|
+
tuesday: mardi
|
|
59
|
+
wednesday: mercredi
|
|
60
|
+
thursday: jeudi
|
|
61
|
+
friday: vendredi
|
|
62
|
+
saturday: samedi
|
|
63
|
+
sunday: dimanche
|
|
64
|
+
january: janvier
|
|
65
|
+
february: février
|
|
66
|
+
march: mars
|
|
67
|
+
april: avril
|
|
68
|
+
may: mai
|
|
69
|
+
june: juin
|
|
70
|
+
july: juillet
|
|
71
|
+
august: août
|
|
72
|
+
september: septembre
|
|
73
|
+
october: octobre
|
|
74
|
+
november: novembre
|
|
75
|
+
december: décembre
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'cronex'
|
|
3
|
+
|
|
4
|
+
module Cronex
|
|
5
|
+
describe ExpressionDescriptor do
|
|
6
|
+
|
|
7
|
+
let(:opts) { { zero_based_dow: false } }
|
|
8
|
+
|
|
9
|
+
it 'every second' do
|
|
10
|
+
expect(desc_fr('* * * * * *')).to eq('Chaque seconde')
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it 'every 45 seconds' do
|
|
14
|
+
expect(desc_fr('*/45 * * * * *')).to eq('Toutes les 45 secondes')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'minute span' do
|
|
18
|
+
expect(desc_fr('0-10 11 * * *')).to eq('Chaque minute entre 11:00 AM et 11:10 AM')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
context 'every minute' do
|
|
22
|
+
it 'every minute' do
|
|
23
|
+
expect(desc_fr('* * * * *')).to eq('Chaque minute')
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'every minute */1' do
|
|
27
|
+
expect(desc_fr('*/1 * * * *')).to eq('Chaque minute')
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'every minute 0 0/1' do
|
|
31
|
+
expect(desc_fr('0 0/1 * * * ?')).to eq('Chaque minute')
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context 'every X minutes:' do
|
|
36
|
+
it 'every 5 minutes' do
|
|
37
|
+
expect(desc_fr('*/5 * * * *')).to eq('Tous les 5 minutes')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it 'every 5 minute 0 */5' do
|
|
41
|
+
expect(desc_fr('0 */5 * * * *')).to eq('Tous les 5 minutes')
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'every 10 minutes 0 0/10' do
|
|
45
|
+
expect(desc_fr('0 0/10 * * * ?')).to eq('Tous les 10 minutes')
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
context 'every hour:' do
|
|
50
|
+
it 'every hour 0 0' do
|
|
51
|
+
expect(desc_fr('0 0 * * * ?')).to eq('Chaque heure')
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it 'every hour 0 0 0/1' do
|
|
55
|
+
expect(desc_fr('0 0 0/1 * * ?')).to eq('Chaque heure')
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
context 'daily:' do
|
|
60
|
+
it 'daily at /\d\d/:/\d\d/' do
|
|
61
|
+
expect(desc_fr('30 11 * * *')).to eq('À 11:30 AM')
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it 'daily at /\d/:/\d/' do
|
|
65
|
+
expect(desc_fr('9 8 * * *')).to eq('À 8:09 AM')
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it 'daily at /0[89]/:/0[89]/' do
|
|
69
|
+
expect(desc_fr('09 08 * * *')).to eq('À 8:09 AM')
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it 'daily at /0[1-7]/ /0[1-7/' do
|
|
73
|
+
expect(desc_fr('02 01 * * *')).to eq('À 1:02 AM')
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
context 'time of day certain days of week:' do
|
|
78
|
+
it 'time of day on MON-FRI' do
|
|
79
|
+
expect(desc_fr('0 23 ? * MON-FRI')).to eq('À 11:00 PM, lundi à vendredi')
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it 'time of day on 1-5' do
|
|
83
|
+
expect(desc_fr('30 11 * * 1-5')).to eq('À 11:30 AM, lundi à vendredi')
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it 'one month only' do
|
|
88
|
+
expect(desc_fr('* * * 3 *')).to eq('Chaque minute, seulement en mars')
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it 'two months only' do
|
|
92
|
+
expect(desc_fr('* * * 3,6 *')).to eq("Chaque minute, seulement en mars et juin")
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it 'two times each afternoon' do
|
|
96
|
+
expect(desc_fr('30 14,16 * * *')).to eq("À 2:30 PM et 4:30 PM")
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it 'three times daily' do
|
|
100
|
+
expect(desc_fr('30 6,14,16 * * *')).to eq('À 6:30 AM, 2:30 PM et 4:30 PM')
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
context 'once a week:' do
|
|
104
|
+
it 'once a week 0' do
|
|
105
|
+
expect(desc_fr('46 9 * * 0')).to eq('À 9:46 AM, seulement le dimanche')
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it 'once a week SUN' do
|
|
109
|
+
expect(desc_fr('46 9 * * SUN')).to eq('À 9:46 AM, seulement le dimanche')
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it 'once a week 7' do
|
|
113
|
+
expect(desc_fr('46 9 * * 7')).to eq('À 9:46 AM, seulement le dimanche')
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it 'once a week 1' do
|
|
117
|
+
expect(desc_fr('46 9 * * 1')).to eq('À 9:46 AM, seulement le lundi')
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it 'once a week 6' do
|
|
121
|
+
expect(desc_fr('46 9 * * 6')).to eq('À 9:46 AM, seulement le samedi')
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
context 'once a week non zero based:' do
|
|
126
|
+
it 'once a week 1' do
|
|
127
|
+
expect(desc_fr('46 9 * * 1', opts)).to eq('À 9:46 AM, seulement le dimanche')
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it 'once a week SUN' do
|
|
131
|
+
expect(desc_fr('46 9 * * SUN', opts)).to eq('À 9:46 AM, seulement le dimanche')
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it 'once a week 2' do
|
|
135
|
+
expect(desc_fr('46 9 * * 2', opts)).to eq('À 9:46 AM, seulement le lundi')
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it 'once a week 7' do
|
|
139
|
+
expect(desc_fr('46 9 * * 7', opts)).to eq('À 9:46 AM, seulement le samedi')
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
context 'twice a week:' do
|
|
144
|
+
it 'twice a week 1,2' do
|
|
145
|
+
expect(desc_fr('46 9 * * 1,2')).to eq('À 9:46 AM, seulement le lundi et mardi')
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
it 'twice a week MON,TUE' do
|
|
149
|
+
expect(desc_fr('46 9 * * MON,TUE')).to eq('À 9:46 AM, seulement le lundi et mardi')
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it 'twice a week 0,6' do
|
|
153
|
+
expect(desc_fr('46 9 * * 0,6')).to eq('À 9:46 AM, seulement le dimanche et samedi')
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
it 'twice a week 6,7' do
|
|
157
|
+
expect(desc_fr('46 9 * * 6,7')).to eq('À 9:46 AM, seulement le samedi et dimanche')
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
context 'twice a week non zero based:' do
|
|
162
|
+
it 'twice a week 1,2' do
|
|
163
|
+
expect(desc_fr('46 9 * * 1,2', opts)).to eq('À 9:46 AM, seulement le dimanche et lundi')
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
it 'twice a week SUN,MON' do
|
|
167
|
+
expect(desc_fr('46 9 * * SUN,MON', opts)).to eq('À 9:46 AM, seulement le dimanche et lundi')
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
it 'twice a week 6,7' do
|
|
171
|
+
expect(desc_fr('46 9 * * 6,7', opts)).to eq('À 9:46 AM, seulement le vendredi et samedi')
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
it 'day of month' do
|
|
176
|
+
expect(desc_fr('23 12 15 * *')).to eq('À 12:23 PM, le 15 de chaque mois')
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
it 'day of month ignores day of week' do
|
|
180
|
+
expect(desc_fr('23 12 15 * SUN')).to eq('À 12:23 PM, le 15 de chaque mois')
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
it 'month name' do
|
|
184
|
+
expect(desc_fr('23 12 * JAN *')).to eq('À 12:23 PM, seulement en janvier')
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
it 'day of month with question mark' do
|
|
188
|
+
expect(desc_fr('23 12 ? JAN *')).to eq('À 12:23 PM, seulement en janvier')
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
it 'month name range 2' do
|
|
192
|
+
expect(desc_fr('23 12 * JAN-FEB *')).to eq('À 12:23 PM, janvier à février')
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
it 'month name range 3' do
|
|
196
|
+
expect(desc_fr('23 12 * JAN-MAR *')).to eq('À 12:23 PM, janvier à mars')
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
it 'day of week name' do
|
|
200
|
+
expect(desc_fr('23 12 * * SUN')).to eq('À 12:23 PM, seulement le dimanche')
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
context 'day of week range:' do
|
|
204
|
+
it 'day of week range MON-FRI' do
|
|
205
|
+
expect(desc_fr('*/5 15 * * MON-FRI')).to eq('Tous les 5 minutes, à 3:00 PM, lundi à vendredi')
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
it 'day of week range 0-6' do
|
|
209
|
+
expect(desc_fr('*/5 15 * * 0-6')).to eq('Tous les 5 minutes, à 3:00 PM, dimanche à samedi')
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
it 'day of week range 6-7' do
|
|
213
|
+
expect(desc_fr('*/5 15 * * 6-7')).to eq('Tous les 5 minutes, à 3:00 PM, samedi à dimanche')
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
context 'day of week once in month:' do
|
|
218
|
+
it 'day of week once MON#3' do
|
|
219
|
+
expect(desc_fr('* * * * MON#3')).to eq('Chaque minute, le troisieme lundi du mois')
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
it 'day of week once 0#3' do
|
|
223
|
+
expect(desc_fr('* * * * 0#3')).to eq('Chaque minute, le troisieme dimanche du mois')
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
context 'last day of week of the month:' do
|
|
228
|
+
it 'last day of week 4L' do
|
|
229
|
+
expect(desc_fr('* * * * 4L')).to eq('Chaque minute, le dernier jeudi du mois')
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
it 'last day of week 0L' do
|
|
233
|
+
expect(desc_fr('* * * * 0L')).to eq('Chaque minute, le dernier dimanche du mois')
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
it 'last day of the month' do
|
|
238
|
+
expect(desc_fr('*/5 * L JAN *')).to eq('Tous les 5 minutes, le dernier jour du mois, seulement en janvier')
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
it 'time of day with seconds' do
|
|
242
|
+
expect(desc_fr('30 02 14 * * *')).to eq('À 2:02:30 PM')
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
it 'second intervals' do
|
|
246
|
+
expect(desc_fr('5-10 * * * * *')).to eq('Secondes 5 à 10 après la minute')
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
it 'second minutes hours intervals' do
|
|
250
|
+
expect(desc_fr('5-10 30-35 10-12 * * *')).to eq(
|
|
251
|
+
"Secondes 5 à 10 après la minute, minutes 30 à 35 après l'heure, entre 10:00 AM et 12:59 PM")
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
it 'every 5 minutes at 30 seconds' do
|
|
255
|
+
expect(desc_fr('30 */5 * * * *')).to eq('À 30 secondes après la minute, tous les 5 minutes')
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
it 'minutes past the hour range' do
|
|
259
|
+
expect(desc_fr('0 30 10-13 ? * WED,FRI')).to eq(
|
|
260
|
+
"À 30 minutes après l'heure, entre 10:00 AM et 1:59 PM, seulement le mercredi et vendredi")
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
it 'seconds past the minute interval' do
|
|
264
|
+
expect(desc_fr('10 0/5 * * * ?')).to eq('À 10 secondes après la minute, tous les 5 minutes')
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
it 'between with interval' do
|
|
268
|
+
expect(desc_fr('2-59/3 1,9,22 11-26 1-6 ?')).to eq(
|
|
269
|
+
"Tous les 3 minutes, minutes 02 à 59 après l'heure, à 1:00 AM, 9:00 AM et 10:00 PM, entre le 11 et le 26 du mois, janvier à juin")
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
it 'recurring first of month' do
|
|
273
|
+
expect(desc_fr('0 0 6 1/1 * ?')).to eq('À 6:00 AM')
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
it 'minutes past the hour' do
|
|
277
|
+
expect(desc_fr('0 5 0/1 * * ?')).to eq("À 05 minutes après l'heure")
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
it 'every past the hour' do
|
|
281
|
+
expect(desc_fr('0 0,5,10,15,20,25,30,35,40,45,50,55 * ? * *')).to eq(
|
|
282
|
+
"À 00, 05, 10, 15, 20, 25, 30, 35, 40, 45, 50 et 55 minutes après l'heure")
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
it 'every x minute past the hour with interval' do
|
|
286
|
+
expect(desc_fr('0 0-30/2 17 ? * MON-FRI')).to eq(
|
|
287
|
+
"Tous les 2 minutes, minutes 00 à 30 après l'heure, à 5:00 PM, lundi à vendredi")
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
it 'one year only with seconds' do
|
|
291
|
+
expect(desc_fr('* * * * * * 2013')).to eq('Chaque seconde, seulement en 2013')
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
it 'one year only without seconds' do
|
|
295
|
+
expect(desc_fr('* * * * * 2013')).to eq('Chaque minute, seulement en 2013')
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
it 'two years only' do
|
|
299
|
+
expect(desc_fr('* * * * * 2013,2014')).to eq('Chaque minute, seulement en 2013 et 2014')
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
it 'year range 2' do
|
|
303
|
+
expect(desc_fr('23 12 * JAN-FEB * 2013-2014')).to eq('À 12:23 PM, janvier à février, 2013 à 2014')
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
it 'year range 3' do
|
|
307
|
+
expect(desc_fr('23 12 * JAN-MAR * 2013-2015')).to eq('À 12:23 PM, janvier à mars, 2013 à 2015')
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
context 'multi part range seconds:' do
|
|
311
|
+
it 'multi part range seconds 2,4-5' do
|
|
312
|
+
expect(desc_fr('2,4-5 1 * * *')).to eq("Minutes 02,04 à 05 après l'heure, à 1:00 AM")
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
it 'multi part range seconds 2,26-28' do
|
|
316
|
+
expect(desc_fr('2,26-28 18 * * *')).to eq("Minutes 02,26 à 28 après l'heure, à 6:00 PM")
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
context 'minutes past the hour:' do
|
|
321
|
+
it 'minutes past the hour 5,10' do
|
|
322
|
+
expect(desc_fr('5,10 0 * * *')).to eq("À 05 et 10 minutes après l'heure")
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
it 'minutes past the hour 5,10 day 2' do
|
|
326
|
+
expect(desc_fr('5,10 0 2 * *')).to eq("À 05 et 10 minutes après l'heure, le 2 de chaque mois")
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
it 'minutes past the hour 5/10 day 2' do
|
|
330
|
+
expect(desc_fr('5/10 0 2 * *')).to eq("Tous les 10 minutes, commence à 05 minutes après l'heure, le 2 de chaque mois")
|
|
331
|
+
end
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
context 'seconds past the minute:' do
|
|
335
|
+
it 'seconds past the minute 5,6' do
|
|
336
|
+
expect(desc_fr('5,6 0 0 * * *')).to eq('À 5 et 6 secondes après la minute')
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
it 'seconds past the minute 5,6 at 1' do
|
|
340
|
+
expect(desc_fr('5,6 0 1 * * *')).to eq('À 5 et 6 secondes après la minute, à 1:00 AM')
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
it 'seconds past the minute 5,6 day 2' do
|
|
344
|
+
expect(desc_fr('5,6 0 0 2 * *')).to eq('À 5 et 6 secondes après la minute, le 2 de chaque mois')
|
|
345
|
+
end
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
context 'increments starting at X > 1:' do
|
|
349
|
+
it 'second increments' do
|
|
350
|
+
expect(desc_fr('5/15 0 * * * *')).to eq("Toutes les 15 secondes, commence à 5 secondes après la minute")
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
it 'minute increments' do
|
|
354
|
+
expect(desc_fr('30/10 * * * *')).to eq("Tous les 10 minutes, commence à 30 minutes après l'heure")
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
it 'hour increments' do
|
|
358
|
+
expect(desc_fr('0 30 2/6 * * ?')).to eq("À 30 minutes après l'heure, tous les 6 heures, commence à 2:00 AM")
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
it 'day of month increments' do
|
|
362
|
+
expect(desc_fr('0 30 8 2/7 * *')).to eq('À 8:30 AM, tous les 7 jours, commence le 2 de chaque mois')
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
it 'day of week increments' do
|
|
366
|
+
expect(desc_fr('0 30 11 * * 2/2')).to eq('À 11:30 AM, tous les 2 jours de la semaine, commence le mardi')
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
it 'month increments' do
|
|
370
|
+
expect(desc_fr('0 20 10 * 2/3 THU')).to eq('À 10:20 AM, seulement le jeudi, tous les 3 mois, commence en février')
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
it 'year increments' do
|
|
374
|
+
expect(desc_fr('0 0 0 1 MAR * 2010/5')).to eq('À 0:00 AM, le 1 de chaque mois, seulement en mars, tous les 5 ans, commence en 2010')
|
|
375
|
+
end
|
|
376
|
+
end
|
|
377
|
+
end
|
|
378
|
+
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -12,4 +12,8 @@ RSpec.configure do |config|
|
|
|
12
12
|
def desc_pt_br(expression, opts = {})
|
|
13
13
|
Cronex::ExpressionDescriptor.new(expression, opts, 'pt_BR').description
|
|
14
14
|
end
|
|
15
|
+
|
|
16
|
+
def desc_fr(expression, opts = {})
|
|
17
|
+
Cronex::ExpressionDescriptor.new(expression, opts, 'fr').description
|
|
18
|
+
end
|
|
15
19
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cronex
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Adrian Kazaku
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-02-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: unicode
|
|
@@ -99,9 +99,11 @@ files:
|
|
|
99
99
|
- lib/cronex/utils.rb
|
|
100
100
|
- lib/cronex/version.rb
|
|
101
101
|
- resources/resources_en.yml
|
|
102
|
+
- resources/resources_fr.yml
|
|
102
103
|
- resources/resources_pt_BR.yml
|
|
103
104
|
- spec/casing_spec.rb
|
|
104
105
|
- spec/exp_descriptor_en_spec.rb
|
|
106
|
+
- spec/exp_descriptor_fr_spec.rb
|
|
105
107
|
- spec/exp_descriptor_pt_BR_spec.rb
|
|
106
108
|
- spec/spec_helper.rb
|
|
107
109
|
homepage: https://github.com/alpinweis/cronex
|
|
@@ -131,5 +133,6 @@ summary: Ruby library that converts cron expressions into human readable strings
|
|
|
131
133
|
test_files:
|
|
132
134
|
- spec/casing_spec.rb
|
|
133
135
|
- spec/exp_descriptor_en_spec.rb
|
|
136
|
+
- spec/exp_descriptor_fr_spec.rb
|
|
134
137
|
- spec/exp_descriptor_pt_BR_spec.rb
|
|
135
138
|
- spec/spec_helper.rb
|