cronex 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YzZlZDk0MGYzNDdhZDY2MGVkZGUwMDI3NDhiZjYxNDRhMjhkMjQ0ZA==
4
+ YmM2NjgwNmY4ZTEyMmIzYmIyYjg4YmZjYTZlN2IwZTc4ZGZiMzkwZg==
5
5
  data.tar.gz: !binary |-
6
- YzU5N2E3ZDI5NGQzMGY4NmMyN2Q1OTIwYTQwMWExZjc2YjUyOWE3YQ==
6
+ ZTg1NDIxYjM0MmFiZGUzZmRlODVjMDc3ZTljNzcwNzY4ZTViNDk5Ng==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MDhhMzZjMTczNDhkMjYwZjNiYmZlNDMxYTE1YThkZGYzNmNmYTA2MGQwYzQ4
10
- YTY2NWRiMTk0NjYzNmQ5MzBhYTVhZTZlZDkxM2Y3MzQ3MjBkNmQxZTYwY2Yx
11
- ZDk3NTEzNzgxMjUxZDdmOWRkMjVmYWE3NzM0OGYzOTgzMTQwYjQ=
9
+ MjMzYzUzNDEzMjcwNWE2NjcyNzBmYWVhY2RkZDM1NDY5MjhlNWFhMjA3MjYx
10
+ ZTc3Mzk5YmMzM2VhNTAyZjAyYmM0ZmJjZDIyZjkwMTkxM2Q4YmM2MTA4NTc2
11
+ MTdjOTk3NjM0MjMwNjVhZjA5OGIzZWJjODMzYmM3NTZlZGM4MjE=
12
12
  data.tar.gz: !binary |-
13
- MjZlNTcwYWJmM2Y0OGI1MzE1NjdiMDQzMzk5NjYxNmFiYzY1YTgxYTk1ZDAw
14
- YjdhNDQ0Njc2ODE0NjE4ZmY1OTJhYTgyYWVhYjcyN2JlZjViYTE5ZmY5YWVi
15
- OGRlYjJkOWEwNTFlZTU5ZDNmNGNlZTZkMzkyOWE3MDkzYzU2YzY=
13
+ MDc4MTgwMmQwYjZhYWFiNjFiNWE2MzJiMDkzMjAyZGMzZGZiMTMwODY3ODBk
14
+ MjhhMmYyNDYxZGJkMTgzZmNiMGZiZmM4N2Q1MzIyMWE0Y2ZjMTgxZDQwNTAw
15
+ MzA3Mjg0ZGE2MTA5M2I4YzdiMjhiZjdkY2Q5ZTBhY2MzYTY2OTY=
@@ -1,2 +1,5 @@
1
+ ### [0.3.0] - 2016-03-02
2
+ * Add pt_BR translation
3
+
1
4
  ### [0.2.0] - 2015-10-25
2
- - Initial public version
5
+ * Initial public version
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.test_files = spec.files.grep(/^(test|spec|features)\//)
21
21
  spec.require_paths = ['lib']
22
22
 
23
+ spec.add_runtime_dependency 'unicode'
23
24
  spec.add_development_dependency 'pry', '~> 0.10'
24
25
  spec.add_development_dependency 'rake', '~> 10.1'
25
26
  spec.add_development_dependency 'rspec', '~> 3.1'
@@ -13,11 +13,11 @@ module Cronex
13
13
  zero_based_dow = options[:zero_based_dow]
14
14
  invalid_dow = !zero_based_dow && dow_num <= 1
15
15
  if invalid_dow || (zero_based_dow && dow_num == 0)
16
- return Cronex::Utils.day_of_week_name(0) # or 7 as in java DateTime().withDayOfWeek(7) for Sunday
16
+ return resources.get(Cronex::Utils.day_of_week_name(0).downcase) # or 7 as in java DateTime().withDayOfWeek(7) for Sunday
17
17
  elsif !zero_based_dow
18
18
  dow_num -= 1
19
19
  end
20
- return Cronex::Utils.day_of_week_name(dow_num)
20
+ return resources.get(Cronex::Utils.day_of_week_name(dow_num).downcase)
21
21
  else
22
22
  return Date.parse(exp.capitalize).strftime('%A')
23
23
  end
@@ -1,7 +1,7 @@
1
1
  module Cronex
2
2
  class MonthDescription < Description
3
3
  def single_item_description(expression)
4
- DateTime.new(Time.now.year, Integer(expression), 1).strftime('%B')
4
+ resources.get(DateTime.new(Time.now.year, Integer(expression), 1).strftime('%B').downcase)
5
5
  end
6
6
 
7
7
  def interval_description_format(expression)
@@ -1,3 +1,5 @@
1
+ require 'unicode'
2
+
1
3
  module Cronex
2
4
 
3
5
  CASINGS = [:title, :sentence, :lower]
@@ -170,11 +172,11 @@ module Cronex
170
172
  def transform_case(desc, case_type = :lower)
171
173
  case case_type
172
174
  when :sentence
173
- desc.sub(/\w+/, &:capitalize)
175
+ desc.sub(/\b[[:word:]]/u) { |s| Unicode.upcase(s) }
174
176
  when :title
175
- desc.gsub(/\w+/, &:capitalize)
177
+ desc.gsub(/\b[[:word:]]/u) { |s| Unicode.upcase(s) }
176
178
  else
177
- desc.downcase
179
+ Unicode.downcase(desc)
178
180
  end
179
181
  end
180
182
 
@@ -1,3 +1,3 @@
1
1
  module Cronex
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -54,3 +54,22 @@ month: month
54
54
  months: months
55
55
  year: year
56
56
  years: years
57
+ monday: Monday
58
+ tuesday: Tuesday
59
+ wednesday: Wednesday
60
+ thursday: Thursday
61
+ friday: Friday
62
+ saturday: Saturday
63
+ sunday: Sunday
64
+ january: January
65
+ february: February
66
+ march: March
67
+ april: April
68
+ may: May
69
+ june: June
70
+ july: July
71
+ august: August
72
+ september: September
73
+ october: October
74
+ november: November
75
+ december: December
@@ -0,0 +1,75 @@
1
+ # resources_pt_BR.yml
2
+ ---
3
+ expression_empty_exception: 'A expressão não pode ser nula ou vazia'
4
+ interval_description_format: 'a cada %s dias da semana'
5
+ between_description_format: 'de %s a %s'
6
+ between_weekday_description_format: 'de %s a %s'
7
+ on_the_day_of_the_month: 'no(a) {{nth}} %s do mês'
8
+ on_the_of_the_month: 'no %s do mês'
9
+ on_the_last_of_the_month: 'no(a) último(a) %s do mês'
10
+ on_the_last_day_of_the_month: 'no último dia do mês'
11
+ on_the_last_weekday_of_the_month: 'no último dia útil do mês'
12
+ between_days_of_the_month: 'entre os dias %s e %s do mês'
13
+ seconds_through_past_the_minute: 'entre %s e %s segundos após o minuto'
14
+ between_x_and_y: 'entre %s e %s'
15
+ past_the_hour: 'após a hora'
16
+ at_x_seconds_past_the_minute: '%s segundos após o minuto'
17
+ minutes_through_past_the_hour: 'entre %s e %s minutos após a hora'
18
+ on_day_of_the_month: 'no dia %s do mês'
19
+ first_weekday: 'primeiro dia útil'
20
+ weekday_nearest_day: 'dia útil mais próximo a %s'
21
+ starting: 'iniciando'
22
+ only_on: 'todo(a) %s'
23
+ only_in: 'em %s'
24
+ every_x_seconds: 'a cada %s segundos'
25
+ every_minute_between: 'A cada minuto entre %s e %s'
26
+ every_second: 'a cada segundo'
27
+ every_minute: 'a cada minuto'
28
+ every_1_minute: 'a cada 1 minuto'
29
+ every_hour: 'a cada hora'
30
+ every_1_hour: 'a cada 1 hora'
31
+ every_day: 'todo dia'
32
+ every_1_day: 'a cada 1 dia'
33
+ every_year: 'a cada ano'
34
+ every_x: 'a cada %s'
35
+ at_x: '%s'
36
+ on_x: '%s'
37
+ in_x: 'em %s'
38
+ first: primeiro(a)
39
+ second: segundo(a)
40
+ third: terceiro(a)
41
+ fourth: quarto(a)
42
+ fifth: quinto(a)
43
+ time_pm: após meio-dia
44
+ time_am: antes do meio-dia
45
+ and: e
46
+ at: às
47
+ day: dia
48
+ days: dias
49
+ hour: hora
50
+ hours: horas
51
+ minute: minuto
52
+ minutes: minutos
53
+ month: mês
54
+ months: mêses
55
+ year: ano
56
+ years: anos
57
+ monday: segunda-feira
58
+ tuesday: terça-feira
59
+ wednesday: quarta-feira
60
+ thursday: quinta-feira
61
+ friday: sexta-feira
62
+ saturday: sábado
63
+ sunday: domingo
64
+ january: janeiro
65
+ february: fevereiro
66
+ march: março
67
+ april: abril
68
+ may: maio
69
+ june: junho
70
+ july: julho
71
+ august: agosto
72
+ september: setembro
73
+ october: outubro
74
+ november: novembro
75
+ december: dezembro
@@ -0,0 +1,364 @@
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_pt_br('* * * * * *')).to eq('A cada segundo')
11
+ end
12
+
13
+ it 'every 45 seconds' do
14
+ expect(desc_pt_br('*/45 * * * * *')).to eq('A cada 45 segundos')
15
+ end
16
+
17
+ it 'minute span' do
18
+ expect(desc_pt_br('0-10 11 * * *')).to eq('A cada minuto entre 11:00 AM e 11:10 AM')
19
+ end
20
+
21
+ context 'every minute' do
22
+ it 'every minute' do
23
+ expect(desc_pt_br('* * * * *')).to eq('A cada minuto')
24
+ end
25
+
26
+ it 'every minute */1' do
27
+ expect(desc_pt_br('*/1 * * * *')).to eq('A cada minuto')
28
+ end
29
+
30
+ it 'every minute 0 0/1' do
31
+ expect(desc_pt_br('0 0/1 * * * ?')).to eq('A cada minuto')
32
+ end
33
+ end
34
+
35
+ context 'every X minutes:' do
36
+ it 'every 5 minutes' do
37
+ expect(desc_pt_br('*/5 * * * *')).to eq('A cada 5 minutos')
38
+ end
39
+
40
+ it 'every 5 minute 0 */5' do
41
+ expect(desc_pt_br('0 */5 * * * *')).to eq('A cada 5 minutos')
42
+ end
43
+
44
+ it 'every 10 minutes 0 0/10' do
45
+ expect(desc_pt_br('0 0/10 * * * ?')).to eq('A cada 10 minutos')
46
+ end
47
+ end
48
+
49
+ context 'every hour:' do
50
+ it 'every hour 0 0' do
51
+ expect(desc_pt_br('0 0 * * * ?')).to eq('A cada hora')
52
+ end
53
+
54
+ it 'every hour 0 0 0/1' do
55
+ expect(desc_pt_br('0 0 0/1 * * ?')).to eq('A cada hora')
56
+ end
57
+ end
58
+
59
+ it 'daily at time' do
60
+ expect(desc_pt_br('30 11 * * *')).to eq('Às 11:30 AM')
61
+ end
62
+
63
+ context 'time of day certain days of week:' do
64
+ it 'time of day on MON-FRI' do
65
+ expect(desc_pt_br('0 23 ? * MON-FRI')).to eq('Às 11:00 PM, de segunda-feira a sexta-feira')
66
+ end
67
+
68
+ it 'time of day on 1-5' do
69
+ expect(desc_pt_br('30 11 * * 1-5')).to eq('Às 11:30 AM, de segunda-feira a sexta-feira')
70
+ end
71
+ end
72
+
73
+ it 'one month todo(a)' do
74
+ expect(desc_pt_br('* * * 3 *')).to eq('A cada minuto, em março')
75
+ end
76
+
77
+ it 'two months todo(a)' do
78
+ expect(desc_pt_br('* * * 3,6 *')).to eq('A cada minuto, em março e junho')
79
+ end
80
+
81
+ it 'two times each afternoon' do
82
+ expect(desc_pt_br('30 14,16 * * *')).to eq('Às 2:30 PM e 4:30 PM')
83
+ end
84
+
85
+ it 'three times daily' do
86
+ expect(desc_pt_br('30 6,14,16 * * *')).to eq('Às 6:30 AM, 2:30 PM e 4:30 PM')
87
+ end
88
+
89
+ context 'once a week:' do
90
+ it 'once a week 0' do
91
+ expect(desc_pt_br('46 9 * * 0')).to eq('Às 9:46 AM, todo(a) domingo')
92
+ end
93
+
94
+ it 'once a week SUN' do
95
+ expect(desc_pt_br('46 9 * * SUN')).to eq('Às 9:46 AM, todo(a) domingo')
96
+ end
97
+
98
+ it 'once a week 7' do
99
+ expect(desc_pt_br('46 9 * * 7')).to eq('Às 9:46 AM, todo(a) domingo')
100
+ end
101
+
102
+ it 'once a week 1' do
103
+ expect(desc_pt_br('46 9 * * 1')).to eq('Às 9:46 AM, todo(a) segunda-feira')
104
+ end
105
+
106
+ it 'once a week 6' do
107
+ expect(desc_pt_br('46 9 * * 6')).to eq('Às 9:46 AM, todo(a) sábado')
108
+ end
109
+ end
110
+
111
+ context 'once a week non zero based:' do
112
+ it 'once a week 1' do
113
+ expect(desc_pt_br('46 9 * * 1', opts)).to eq('Às 9:46 AM, todo(a) domingo')
114
+ end
115
+
116
+ it 'once a week SUN' do
117
+ expect(desc_pt_br('46 9 * * SUN', opts)).to eq('Às 9:46 AM, todo(a) domingo')
118
+ end
119
+
120
+ it 'once a week 2' do
121
+ expect(desc_pt_br('46 9 * * 2', opts)).to eq('Às 9:46 AM, todo(a) segunda-feira')
122
+ end
123
+
124
+ it 'once a week 7' do
125
+ expect(desc_pt_br('46 9 * * 7', opts)).to eq('Às 9:46 AM, todo(a) sábado')
126
+ end
127
+ end
128
+
129
+ context 'twice a week:' do
130
+ it 'twice a week 1,2' do
131
+ expect(desc_pt_br('46 9 * * 1,2')).to eq('Às 9:46 AM, todo(a) segunda-feira e terça-feira')
132
+ end
133
+
134
+ it 'twice a week MON,TUE' do
135
+ expect(desc_pt_br('46 9 * * MON,TUE')).to eq('Às 9:46 AM, todo(a) segunda-feira e terça-feira')
136
+ end
137
+
138
+ it 'twice a week 0,6' do
139
+ expect(desc_pt_br('46 9 * * 0,6')).to eq('Às 9:46 AM, todo(a) domingo e sábado')
140
+ end
141
+
142
+ it 'twice a week 6,7' do
143
+ expect(desc_pt_br('46 9 * * 6,7')).to eq('Às 9:46 AM, todo(a) sábado e domingo')
144
+ end
145
+ end
146
+
147
+ context 'twice a week non zero based:' do
148
+ it 'twice a week 1,2' do
149
+ expect(desc_pt_br('46 9 * * 1,2', opts)).to eq('Às 9:46 AM, todo(a) domingo e segunda-feira')
150
+ end
151
+
152
+ it 'twice a week SUN,MON' do
153
+ expect(desc_pt_br('46 9 * * SUN,MON', opts)).to eq('Às 9:46 AM, todo(a) domingo e segunda-feira')
154
+ end
155
+
156
+ it 'twice a week 6,7' do
157
+ expect(desc_pt_br('46 9 * * 6,7', opts)).to eq('Às 9:46 AM, todo(a) sexta-feira e sábado')
158
+ end
159
+ end
160
+
161
+ it 'day of month' do
162
+ expect(desc_pt_br('23 12 15 * *')).to eq('Às 12:23 PM, no dia 15 do mês')
163
+ end
164
+
165
+ it 'day of month ignores day of week' do
166
+ expect(desc_pt_br('23 12 15 * SUN')).to eq('Às 12:23 PM, no dia 15 do mês')
167
+ end
168
+
169
+ it 'month name' do
170
+ expect(desc_pt_br('23 12 * JAN *')).to eq('Às 12:23 PM, em janeiro')
171
+ end
172
+
173
+ it 'day of month with question mark' do
174
+ expect(desc_pt_br('23 12 ? JAN *')).to eq('Às 12:23 PM, em janeiro')
175
+ end
176
+
177
+ it 'month name range 2' do
178
+ expect(desc_pt_br('23 12 * JAN-FEB *')).to eq('Às 12:23 PM, de janeiro a fevereiro')
179
+ end
180
+
181
+ it 'month name range 3' do
182
+ expect(desc_pt_br('23 12 * JAN-MAR *')).to eq('Às 12:23 PM, de janeiro a março')
183
+ end
184
+
185
+ it 'day of week name' do
186
+ expect(desc_pt_br('23 12 * * SUN')).to eq('Às 12:23 PM, todo(a) domingo')
187
+ end
188
+
189
+ context 'day of week range:' do
190
+ it 'day of week range MON-FRI' do
191
+ expect(desc_pt_br('*/5 15 * * MON-FRI')).to eq('A cada 5 minutos, 3:00 PM, de segunda-feira a sexta-feira')
192
+ end
193
+
194
+ it 'day of week range 0-6' do
195
+ expect(desc_pt_br('*/5 15 * * 0-6')).to eq('A cada 5 minutos, 3:00 PM, de domingo a sábado')
196
+ end
197
+
198
+ it 'day of week range 6-7' do
199
+ expect(desc_pt_br('*/5 15 * * 6-7')).to eq('A cada 5 minutos, 3:00 PM, de sábado a domingo')
200
+ end
201
+ end
202
+
203
+ context 'day of week once in month:' do
204
+ it 'day of week once MON#3' do
205
+ expect(desc_pt_br('* * * * MON#3')).to eq('A cada minuto, no(a) terceiro(a) segunda-feira do mês')
206
+ end
207
+
208
+ it 'day of week once 0#3' do
209
+ expect(desc_pt_br('* * * * 0#3')).to eq('A cada minuto, no(a) terceiro(a) domingo do mês')
210
+ end
211
+ end
212
+
213
+ context 'last day of week of the month:' do
214
+ it 'last day of week 4L' do
215
+ expect(desc_pt_br('* * * * 4L')).to eq('A cada minuto, no(a) último(a) quinta-feira do mês')
216
+ end
217
+
218
+ it 'last day of week 0L' do
219
+ expect(desc_pt_br('* * * * 0L')).to eq('A cada minuto, no(a) último(a) domingo do mês')
220
+ end
221
+ end
222
+
223
+ it 'last day of the month' do
224
+ expect(desc_pt_br('*/5 * L JAN *')).to eq('A cada 5 minutos, no último dia do mês, em janeiro')
225
+ end
226
+
227
+ it 'time of day with seconds' do
228
+ expect(desc_pt_br('30 02 14 * * *')).to eq('Às 2:02:30 PM')
229
+ end
230
+
231
+ it 'second intervals' do
232
+ expect(desc_pt_br('5-10 * * * * *')).to eq('Entre 5 e 10 segundos após o minuto')
233
+ end
234
+
235
+ it 'second minutes hours intervals' do
236
+ expect(desc_pt_br('5-10 30-35 10-12 * * *')).to eq(
237
+ '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')
238
+ end
239
+
240
+ it 'every 5 minutes at 30 seconds' do
241
+ expect(desc_pt_br('30 */5 * * * *')).to eq('30 segundos após o minuto, a cada 5 minutos')
242
+ end
243
+
244
+ it 'minutes past the hour range' do
245
+ expect(desc_pt_br('0 30 10-13 ? * WED,FRI')).to eq(
246
+ '30 minutos após a hora, entre 10:00 AM e 1:59 PM, todo(a) quarta-feira e sexta-feira')
247
+ end
248
+
249
+ it 'seconds past the minute interval' do
250
+ expect(desc_pt_br('10 0/5 * * * ?')).to eq('10 segundos após o minuto, a cada 5 minutos')
251
+ end
252
+
253
+ it 'between with interval' do
254
+ expect(desc_pt_br('2-59/3 1,9,22 11-26 1-6 ?')).to eq(
255
+ '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')
256
+ end
257
+
258
+ it 'recurring first of month' do
259
+ expect(desc_pt_br('0 0 6 1/1 * ?')).to eq('Às 6:00 AM')
260
+ end
261
+
262
+ it 'minutes past the hour' do
263
+ expect(desc_pt_br('0 5 0/1 * * ?')).to eq('05 minutos após a hora')
264
+ end
265
+
266
+ it 'every past the hour' do
267
+ expect(desc_pt_br('0 0,5,10,15,20,25,30,35,40,45,50,55 * ? * *')).to eq(
268
+ '00, 05, 10, 15, 20, 25, 30, 35, 40, 45, 50 e 55 minutos após a hora')
269
+ end
270
+
271
+ it 'every x minute past the hour with interval' do
272
+ expect(desc_pt_br('0 0-30/2 17 ? * MON-FRI')).to eq(
273
+ 'A cada 2 minutos, entre 00 e 30 minutos após a hora, 5:00 PM, de segunda-feira a sexta-feira')
274
+ end
275
+
276
+ it 'one year only with seconds' do
277
+ expect(desc_pt_br('* * * * * * 2013')).to eq('A cada segundo, em 2013')
278
+ end
279
+
280
+ it 'one year todo(a) without seconds' do
281
+ expect(desc_pt_br('* * * * * 2013')).to eq('A cada minuto, em 2013')
282
+ end
283
+
284
+ it 'two years todo(a)' do
285
+ expect(desc_pt_br('* * * * * 2013,2014')).to eq('A cada minuto, em 2013 e 2014')
286
+ end
287
+
288
+ it 'year range 2' do
289
+ expect(desc_pt_br('23 12 * JAN-FEB * 2013-2014')).to eq('Às 12:23 PM, de janeiro a fevereiro, de 2013 a 2014')
290
+ end
291
+
292
+ it 'year range 3' do
293
+ expect(desc_pt_br('23 12 * JAN-MAR * 2013-2015')).to eq('Às 12:23 PM, de janeiro a março, de 2013 a 2015')
294
+ end
295
+
296
+ context 'multi part range seconds:' do
297
+ it 'multi part range seconds 2,4-5' do
298
+ expect(desc_pt_br('2,4-5 1 * * *')).to eq('Entre 02,04 e 05 minutos após a hora, 1:00 AM')
299
+ end
300
+
301
+ it 'multi part range seconds 2,26-28' do
302
+ expect(desc_pt_br('2,26-28 18 * * *')).to eq('Entre 02,26 e 28 minutos após a hora, 6:00 PM')
303
+ end
304
+ end
305
+
306
+ context 'minutes past the hour:' do
307
+ it 'minutes past the hour 5,10' do
308
+ expect(desc_pt_br('5,10 0 * * *')).to eq('05 e 10 minutos após a hora')
309
+ end
310
+
311
+ it 'minutes past the hour 5,10 day 2' do
312
+ expect(desc_pt_br('5,10 0 2 * *')).to eq('05 e 10 minutos após a hora, no dia 2 do mês')
313
+ end
314
+
315
+ it 'minutes past the hour 5/10 day 2' do
316
+ expect(desc_pt_br('5/10 0 2 * *')).to eq('A cada 10 minutos, iniciando 05 minutos após a hora, no dia 2 do mês')
317
+ end
318
+ end
319
+
320
+ context 'seconds past the minute:' do
321
+ it 'seconds past the minute 5,6' do
322
+ expect(desc_pt_br('5,6 0 0 * * *')).to eq('5 e 6 segundos após o minuto')
323
+ end
324
+
325
+ it 'seconds past the minute 5,6 at 1' do
326
+ expect(desc_pt_br('5,6 0 1 * * *')).to eq('5 e 6 segundos após o minuto, 1:00 AM')
327
+ end
328
+
329
+ it 'seconds past the minute 5,6 day 2' do
330
+ expect(desc_pt_br('5,6 0 0 2 * *')).to eq('5 e 6 segundos após o minuto, no dia 2 do mês')
331
+ end
332
+ end
333
+
334
+ context 'increments starting at X > 1:' do
335
+ it 'second increments' do
336
+ expect(desc_pt_br('5/15 0 * * * *')).to eq('A cada 15 segundos, iniciando 5 segundos após o minuto')
337
+ end
338
+
339
+ it 'minute increments' do
340
+ expect(desc_pt_br('30/10 * * * *')).to eq('A cada 10 minutos, iniciando 30 minutos após a hora')
341
+ end
342
+
343
+ it 'hour increments' do
344
+ expect(desc_pt_br('0 30 2/6 * * ?')).to eq('30 minutos após a hora, a cada 6 horas, iniciando 2:00 AM')
345
+ end
346
+
347
+ it 'day of month increments' do
348
+ expect(desc_pt_br('0 30 8 2/7 * *')).to eq('Às 8:30 AM, a cada 7 dias, iniciando no dia 2 do mês')
349
+ end
350
+
351
+ it 'day of week increments' do
352
+ expect(desc_pt_br('0 30 11 * * 2/2')).to eq('Às 11:30 AM, a cada 2 dias da semana, iniciando terça-feira')
353
+ end
354
+
355
+ it 'month increments' do
356
+ expect(desc_pt_br('0 20 10 * 2/3 THU')).to eq('Às 10:20 AM, todo(a) quinta-feira, a cada 3 mêses, iniciando em fevereiro')
357
+ end
358
+
359
+ it 'year increments' do
360
+ expect(desc_pt_br('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')
361
+ end
362
+ end
363
+ end
364
+ end
@@ -8,4 +8,8 @@ RSpec.configure do |config|
8
8
  def desc(expression, opts = {})
9
9
  Cronex::ExpressionDescriptor.new(expression, opts).description
10
10
  end
11
+
12
+ def desc_pt_br(expression, opts = {})
13
+ Cronex::ExpressionDescriptor.new(expression, opts, 'pt_BR').description
14
+ end
11
15
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cronex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.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: 2015-10-25 00:00:00.000000000 Z
11
+ date: 2016-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: unicode
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: pry
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -85,8 +99,10 @@ files:
85
99
  - lib/cronex/utils.rb
86
100
  - lib/cronex/version.rb
87
101
  - resources/resources_en.yml
102
+ - resources/resources_pt_BR.yml
88
103
  - spec/casing_spec.rb
89
- - spec/exp_descriptor_spec.rb
104
+ - spec/exp_descriptor_en_spec.rb
105
+ - spec/exp_descriptor_pt_BR_spec.rb
90
106
  - spec/spec_helper.rb
91
107
  homepage: https://github.com/alpinweis/cronex
92
108
  licenses:
@@ -114,5 +130,6 @@ specification_version: 4
114
130
  summary: Ruby library that converts cron expressions into human readable strings
115
131
  test_files:
116
132
  - spec/casing_spec.rb
117
- - spec/exp_descriptor_spec.rb
133
+ - spec/exp_descriptor_en_spec.rb
134
+ - spec/exp_descriptor_pt_BR_spec.rb
118
135
  - spec/spec_helper.rb