cron_format 0.1.12 → 0.1.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/cron_format.rb +38 -20
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b0a1a7edae8adf3f1df74f5d7b0faced458b328
|
4
|
+
data.tar.gz: cc7cbf448d1bd25646c296667557f9b28c12f037
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5df4e4d5f2eade9400532c2a2e3b6266bcc941d576fead073fbf40aef0cb0a02e7db935b7eb94af730195b1b3444de1a75876c34a20e7a943cd2e8d2373446a2
|
7
|
+
data.tar.gz: f1504a906b020fcb0b094396f99dfafb06ba0dc0060a190ac9db513a451cd12a686fc427ba0aa3e444deedd3bbf8b0309c736234d4bb349191b9fddb91339709
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/cron_format.rb
CHANGED
@@ -23,6 +23,7 @@ class CronFormat
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def next()
|
26
|
+
|
26
27
|
nudge() unless @cron_string =~ %r{/}
|
27
28
|
parse()
|
28
29
|
end
|
@@ -59,7 +60,8 @@ class CronFormat
|
|
59
60
|
day_proc
|
60
61
|
]
|
61
62
|
|
62
|
-
|
63
|
+
r = units[index].call @to_time, n
|
64
|
+
@to_time = r
|
63
65
|
|
64
66
|
end
|
65
67
|
|
@@ -69,7 +71,7 @@ class CronFormat
|
|
69
71
|
raw_a << '*' if raw_a.length <= 5 # add the year?
|
70
72
|
|
71
73
|
units = @to_time.to_a.values_at(1..4) + [nil, @to_time.year]
|
72
|
-
|
74
|
+
|
73
75
|
procs = {
|
74
76
|
min: lambda {|x, interval| x += (interval * MINUTE).to_i},
|
75
77
|
hour: lambda {|x, interval| x += (interval * HOUR).to_i},
|
@@ -101,7 +103,7 @@ class CronFormat
|
|
101
103
|
|
102
104
|
# take any repeater out of the unit value
|
103
105
|
raw_units, repeaters = [], []
|
104
|
-
|
106
|
+
|
105
107
|
raw_a.each do |x|
|
106
108
|
v1, v2 = x.split('/')
|
107
109
|
raw_units << v1
|
@@ -128,6 +130,7 @@ class CronFormat
|
|
128
130
|
|
129
131
|
if repeaters.any? then
|
130
132
|
repeaters.each_with_index do |x,i|
|
133
|
+
|
131
134
|
next if i == 4
|
132
135
|
|
133
136
|
if x and not raw_a[i][/^\*/] then
|
@@ -139,9 +142,9 @@ class CronFormat
|
|
139
142
|
end
|
140
143
|
end
|
141
144
|
end
|
142
|
-
|
145
|
+
|
143
146
|
dates = inflate(raw_date)
|
144
|
-
|
147
|
+
|
145
148
|
a = dates.map do |date|
|
146
149
|
|
147
150
|
d = date.map{|x| x ? x.clone : nil}
|
@@ -150,15 +153,15 @@ class CronFormat
|
|
150
153
|
|
151
154
|
next unless day_valid? d.reverse.take 3
|
152
155
|
t = Time.parse(TF % d.reverse)
|
153
|
-
|
156
|
+
|
154
157
|
# if there is a defined weekday, increment a day at
|
155
158
|
# a time to match that weekday
|
156
159
|
if wday and wday != t.wday then
|
157
160
|
|
158
161
|
t = Time.parse(TF % d.reverse)
|
159
|
-
|
162
|
+
|
160
163
|
if repeaters[4] then
|
161
|
-
t +=
|
164
|
+
t += repeaters[4].to_i * WEEK while t < @to_time
|
162
165
|
else
|
163
166
|
d[2], d[3] = @to_time.to_a.values_at(3,4).map(&:to_s)
|
164
167
|
t += DAY until t.wday == wday.to_i
|
@@ -169,6 +172,7 @@ class CronFormat
|
|
169
172
|
# increment the month, day, hour, and minute for
|
170
173
|
# expressions which match '* * * *' consecutively
|
171
174
|
i = 3
|
175
|
+
|
172
176
|
while t < @to_time and i >= 0 and raw_a[i][/\*/]
|
173
177
|
|
174
178
|
d[i] = @to_time.to_a[i+1].to_s
|
@@ -191,15 +195,7 @@ class CronFormat
|
|
191
195
|
t = Time.parse(TF % d.reverse)
|
192
196
|
end
|
193
197
|
elsif t.day < @to_time.day and raw_a[3] == '*' then
|
194
|
-
|
195
|
-
# increment the month
|
196
|
-
if d[3].to_i <= 11 then
|
197
|
-
d[3].succ!
|
198
|
-
else
|
199
|
-
d[3] = '1'
|
200
|
-
d[4].succ!
|
201
|
-
end
|
202
|
-
t = Time.parse(TF % d.reverse)
|
198
|
+
t = increment_month d
|
203
199
|
elsif (t.hour < @to_time.hour or (t.hour == @to_time.hour \
|
204
200
|
and t.min < @to_time.min and raw_a[1] != '*') ) \
|
205
201
|
and raw_a[2] == '*' then
|
@@ -214,6 +210,8 @@ class CronFormat
|
|
214
210
|
# increment the minute
|
215
211
|
t += MINUTE * ((@to_time.min - d[0].to_i) + 1)
|
216
212
|
t = procs.values[i].call(t, repeaters[i].to_i) if repeaters[i]
|
213
|
+
elsif raw_a[3] == '*' then
|
214
|
+
t = increment_month d
|
217
215
|
end
|
218
216
|
|
219
217
|
end
|
@@ -221,7 +219,13 @@ class CronFormat
|
|
221
219
|
# after the units have been incremented we need to
|
222
220
|
# increment the weekday again if need be
|
223
221
|
if wday then
|
224
|
-
|
222
|
+
|
223
|
+
if raw_date[2].length > 1 then
|
224
|
+
|
225
|
+
t += DAY until t.wday == wday.to_i and raw_date[2].include? t.day.to_s
|
226
|
+
else
|
227
|
+
t += DAY until t.wday == wday.to_i
|
228
|
+
end
|
225
229
|
end
|
226
230
|
|
227
231
|
# finally, if the date is still less than the current time we can
|
@@ -231,7 +235,6 @@ class CronFormat
|
|
231
235
|
repeaters.each_with_index do |x,i|
|
232
236
|
|
233
237
|
if x then
|
234
|
-
|
235
238
|
t = procs.values[i].call(t, x.to_i)
|
236
239
|
end
|
237
240
|
end
|
@@ -251,7 +254,22 @@ class CronFormat
|
|
251
254
|
day.to_i <= last_day.day
|
252
255
|
end
|
253
256
|
|
254
|
-
def
|
257
|
+
def increment_month(d)
|
258
|
+
|
259
|
+
if d[3].to_i <= 11 then
|
260
|
+
d[3].succ!
|
261
|
+
else
|
262
|
+
d[3] = '1'
|
263
|
+
d[4].succ!
|
264
|
+
end
|
265
|
+
|
266
|
+
Time.parse(TF % d.reverse)
|
267
|
+
end
|
268
|
+
|
269
|
+
def inflate(raw_a)
|
270
|
+
|
271
|
+
a = raw_a.dclone
|
272
|
+
|
255
273
|
Array.new(a.max_by {|x| x.length}.length).map do |x|
|
256
274
|
a.map{|x| x.length <= 1 ? x.first : x.shift}
|
257
275
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cron_format
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -31,7 +31,7 @@ cert_chain:
|
|
31
31
|
9DFxFCS6sgAw21S+V+ym9ft8kbqgy7zOGdPRRNlwgb/V+UWqH4yaCtk7yJT+n8vm
|
32
32
|
LHkRlhnm0ScZYw==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date: 2014-01-
|
34
|
+
date: 2014-01-14 00:00:00.000000000 Z
|
35
35
|
dependencies: []
|
36
36
|
description:
|
37
37
|
email: james@r0bertson.co.uk
|
metadata.gz.sig
CHANGED
Binary file
|