cronex 0.2.0 → 0.3.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 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