cron_format 0.1.7 → 0.1.8
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 +31 -15
- data.tar.gz.sig +2 -1
- metadata +1 -1
- 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: bc5b124e93e76533580f0693d394e7c14c42b63d
|
4
|
+
data.tar.gz: c86bf9db1516e6a0136d171a849d590fbe5654fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d961fcb2c332f4196bb865bf993008eb2f49ad4af902e5b5b970fafedfe1ee35ce1081b165fa9c913bc825bb794f5117427d95f44c2106f615247ceeceb2ee6
|
7
|
+
data.tar.gz: 4fd8d28ba6ea17a6a625f76f634891f0062011c37fda5aec18e15532866bda9442f579341d39670197ab436bf7f4ef574c99b3e029fee7e2bfa75d6e4a0a0a17
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/cron_format.rb
CHANGED
@@ -115,23 +115,27 @@ class CronFormat
|
|
115
115
|
raw_units << v1
|
116
116
|
repeaters << v2
|
117
117
|
end
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
118
|
+
|
119
|
+
if raw_units[4] then
|
120
|
+
r = /(sun|mon|tues|wed|thurs|fri|satur|sun)(day)?|tue|thu|sat/i
|
121
|
+
|
122
|
+
raw_units[4].gsub!(r) do |x|
|
123
|
+
a = Date::DAYNAMES
|
124
|
+
a.index a.grep(/#{x}/i).first
|
125
|
+
end
|
123
126
|
end
|
124
127
|
|
125
128
|
@to_expression = (raw_a[0..3] + [raw_units[4]])[0..4].join ' '
|
126
|
-
|
127
129
|
raw_date = raw_units.map.with_index {|x,i| dt[i].call(x) }
|
128
|
-
|
130
|
+
|
129
131
|
# expand the repeater
|
130
132
|
|
131
|
-
ceil = {min: MINUTE, hour: 23, day: 31, month: 12}.values
|
133
|
+
ceil = {min: MINUTE, hour: 23, day: 31, month: 12}.values
|
132
134
|
|
133
135
|
if repeaters.any? then
|
134
136
|
repeaters.each_with_index do |x,i|
|
137
|
+
next if i == 4
|
138
|
+
|
135
139
|
if x and not raw_a[i][/^\*/] then
|
136
140
|
raw_date[i] = raw_date[i].map {|y|
|
137
141
|
(y.to_i...ceil[i]).step(x.to_i).to_a.map(&:to_s)
|
@@ -142,25 +146,31 @@ class CronFormat
|
|
142
146
|
end
|
143
147
|
end
|
144
148
|
|
145
|
-
|
146
149
|
dates = raw_date.inflate
|
147
150
|
|
148
151
|
a = dates.map do |date|
|
149
152
|
|
150
153
|
d = date.map{|x| x ? x.clone : nil}
|
151
154
|
wday, year = d.pop(2)
|
152
|
-
|
153
155
|
d << year
|
154
156
|
|
155
157
|
next unless day_valid? d.reverse.take 3
|
156
|
-
t = Time.parse(TF % d.reverse)
|
158
|
+
t = Time.parse(TF % d.reverse)
|
159
|
+
|
160
|
+
# if there is a defined weekday, increment a day at
|
161
|
+
# a time to match that weekday
|
162
|
+
#jr050813 if t < @to_time and wday and wday != t.wday then
|
163
|
+
if wday and wday != t.wday then
|
157
164
|
|
158
|
-
if t < @to_time and wday and wday != t.wday then
|
159
165
|
d[2], d[3] = @to_time.to_a.values_at(3,4).map(&:to_s)
|
166
|
+
|
160
167
|
t = Time.parse(TF % d.reverse)
|
161
|
-
t += DAY until t.wday == wday.to_i
|
168
|
+
t += DAY until t.wday == wday.to_i
|
169
|
+
t += (7 + repeaters[4].to_i) * DAY if t < @to_time and repeaters[4]
|
162
170
|
end
|
163
|
-
|
171
|
+
|
172
|
+
# increment the month, day, hour, and minute for
|
173
|
+
# expressions which match '* * * *' consecutively
|
164
174
|
i = 3
|
165
175
|
while t < @to_time and i >= 0 and raw_a[i][/\*/]
|
166
176
|
|
@@ -169,6 +179,8 @@ class CronFormat
|
|
169
179
|
i -= 1
|
170
180
|
end
|
171
181
|
|
182
|
+
# starting from the biggest unit, attempt to increment that
|
183
|
+
# unit where it is equal to '*'
|
172
184
|
if t < @to_time then
|
173
185
|
|
174
186
|
if t.month < @to_time.month and raw_a[4] == '*' then
|
@@ -197,7 +209,6 @@ class CronFormat
|
|
197
209
|
|
198
210
|
# increment the day
|
199
211
|
t += DAY * ((@to_time.day - d[2].to_i) + 1)
|
200
|
-
#jr070713 elsif t.min < @to_time.min and raw_a[1] == '*' then
|
201
212
|
elsif t.min < @to_time.min and raw_a[1] == '*' then
|
202
213
|
|
203
214
|
# increment the hour
|
@@ -210,13 +221,18 @@ class CronFormat
|
|
210
221
|
|
211
222
|
end
|
212
223
|
|
224
|
+
# after the units have been incremented we need to
|
225
|
+
# increment the weekday again if need be
|
213
226
|
if wday then
|
214
227
|
t += DAY until t.wday == wday.to_i
|
215
228
|
end
|
216
229
|
|
230
|
+
# finally, if the date is still less than the current time we can
|
231
|
+
# increment the date using any repeating intervals
|
217
232
|
if t <= @to_time and repeaters.any? then
|
218
233
|
|
219
234
|
repeaters.each_with_index do |x,i|
|
235
|
+
|
220
236
|
if x then
|
221
237
|
t = procs.values[i].call(t, x.to_i)
|
222
238
|
end
|
data.tar.gz.sig
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
�Aa9Y�X�l���h�U���W��j�!~���@ST�kh�kUy>4#�+\2A�-z�H�r��Q�`I[�;��X���
|
2
|
+
��p������o��(�����P��#G8】�M�Ы�MoԑAF�\�,^����؎�E����@��5�̓�:�ө!���Cog�UT*wz6�1v<y��nd�T2���t��q�7t��}�R���ITNQ=��ӶL��r�/�b��SA��R9�����=L(�B-
|
metadata
CHANGED
metadata.gz.sig
CHANGED
Binary file
|