cron_format 0.1.7 → 0.1.8
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 +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
|