chronic_cron 0.2.22 → 0.2.23
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.tar.gz.sig +0 -0
- data/lib/chronic_cron.rb +40 -5
- metadata +12 -12
- 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: 0d7c7abf5cc1f534726e758672d9c323f78e3426
|
4
|
+
data.tar.gz: fea193074527c2868b5d9bb0bcdffc82375df313
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b91b1730c74cbe6c6d336e298c7cdb4b3efe034dc72b05cb711326e899295570ea6c74ffa72574efc81864231ef5ab3446ceadf9b2908a4faf194bcb67836f5
|
7
|
+
data.tar.gz: 542d93e2005e754b5a37697674a12bb20908f4fe90ae01dbba0a72a764c2b604915133e5c1ff0a173f7410f35f4ba6427b839fca3cb5d2dae905a4d8d81137aa
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/chronic_cron.rb
CHANGED
@@ -8,6 +8,8 @@ require 'cron_format'
|
|
8
8
|
require 'timetoday'
|
9
9
|
|
10
10
|
|
11
|
+
WEEK = DAY * 7
|
12
|
+
|
11
13
|
class ChronicCron
|
12
14
|
include AppRoutes
|
13
15
|
|
@@ -22,6 +24,7 @@ class ChronicCron
|
|
22
24
|
expressions(@params)
|
23
25
|
|
24
26
|
expression = find_expression(s.sub(/^(?:on|at|from|starting)\s+/,''))
|
27
|
+
|
25
28
|
@cf = CronFormat.new(expression, now)
|
26
29
|
@to_expression = @cf.to_expression
|
27
30
|
|
@@ -160,7 +163,7 @@ class ChronicCron
|
|
160
163
|
# e.g. starting 05-Aug@15:03 every 2 weeks
|
161
164
|
get /(.*) every (\d) weeks/ do |raw_date, interval|
|
162
165
|
|
163
|
-
t = Chronic.parse(raw_date)
|
166
|
+
t = Chronic.parse(raw_date, :now => @now)
|
164
167
|
mins, hrs, day, month, year = t.to_a.values_at(1,2,3,4,5)
|
165
168
|
"%s %s %s %s %s/%s %s" % [mins, hrs, day, month, t.wday, interval, year]
|
166
169
|
end
|
@@ -168,7 +171,7 @@ class ChronicCron
|
|
168
171
|
# e.g. from 05-Aug@12:34 fortnightly
|
169
172
|
get /(.*)\s+(?:biweekly|fortnightly)/ do |raw_date|
|
170
173
|
|
171
|
-
t = Chronic.parse(raw_date)
|
174
|
+
t = Chronic.parse(raw_date, :now => @now)
|
172
175
|
mins, hrs, day, month, year = t.to_a.values_at(1,2,3,4,5)
|
173
176
|
"%s %s %s %s %s/2 %s" % [mins, hrs, day, month, t.wday, year]
|
174
177
|
end
|
@@ -176,19 +179,51 @@ class ChronicCron
|
|
176
179
|
# e.g. from 06-Aug@1pm every week
|
177
180
|
get /(.*)\s+(?:weekly|every week)/ do |raw_date|
|
178
181
|
|
179
|
-
t = Chronic.parse(raw_date)
|
182
|
+
t = Chronic.parse(raw_date, :now => @now)
|
180
183
|
mins, hrs, day, month, year = t.to_a.values_at(1,2,3,4,5)
|
181
184
|
"%s %s %s %s %s %s" % [mins, hrs, day, month, t.wday, year]
|
182
185
|
end
|
183
186
|
|
187
|
+
# e.g. first thursday of each month at 7:30pm
|
188
|
+
nday = '(\w+(?:st|rd|nd))\s+' + weekday + '\s+'
|
189
|
+
get /#{nday}(?:of\s+)?(?:the|each|every)\s+month(?:\s+at\s+([^\s]+))?/ do
|
190
|
+
|nth_week, day_of_week, time|
|
191
|
+
|
192
|
+
month = @now.month
|
193
|
+
|
194
|
+
h = {
|
195
|
+
/first|1st/ => 0,
|
196
|
+
/second|2nd/ => 1,
|
197
|
+
/third|3rd/ => 2,
|
198
|
+
/fourth|4th|last/ => 3
|
199
|
+
}
|
200
|
+
|
201
|
+
_, nweek = h.find{|k,_| nth_week[k]}
|
202
|
+
|
203
|
+
def make_date(day_of_week, month, time, nweek)
|
204
|
+
|
205
|
+
Chronic.parse([day_of_week,month,time].join(' '), :now => @now) \
|
206
|
+
+ WEEK * nweek
|
207
|
+
end
|
208
|
+
|
209
|
+
months = %w(jan feb mar apr may jun jul aug sep oct nov dec)
|
210
|
+
t = make_date day_of_week, months[month-1], time, nweek
|
211
|
+
|
212
|
+
if t < Time.now
|
213
|
+
t = make_date(day_of_week, months.rotate[month-1], time, nweek)
|
214
|
+
end
|
215
|
+
|
216
|
+
"%s %s %s %s * %s" % t.to_a.values_at(1,2,3,4,5)
|
217
|
+
end
|
218
|
+
|
184
219
|
# e.g. 04-Aug@12:34
|
185
220
|
get '*' do
|
186
221
|
|
187
|
-
t = Chronic.parse(params[:input])
|
222
|
+
t = Chronic.parse(params[:input], :now => @now)
|
188
223
|
"%s %s %s %s * %s" % t.to_a.values_at(1,2,3,4,5)
|
189
224
|
end
|
190
225
|
end
|
191
226
|
|
192
227
|
alias find_expression run_route
|
193
228
|
|
194
|
-
end
|
229
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chronic_cron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -29,62 +29,62 @@ cert_chain:
|
|
29
29
|
aYYwh4InyS/QZr4LG0nh0TuYVP5vwm1cCSlLlo4dlv7bl7Q4y815j70z8O4oUrT8
|
30
30
|
5oSIzmlVDEDmwAibYqdf+aHqmum1mkYW
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date: 2013-
|
32
|
+
date: 2013-10-31 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: app-routes
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: cron_format
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: chronic
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
type: :runtime
|
70
70
|
prerelease: false
|
71
71
|
version_requirements: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
- !ruby/object:Gem::Dependency
|
77
77
|
name: timetoday
|
78
78
|
requirement: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
type: :runtime
|
84
84
|
prerelease: false
|
85
85
|
version_requirements: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
description:
|
@@ -104,12 +104,12 @@ require_paths:
|
|
104
104
|
- lib
|
105
105
|
required_ruby_version: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
|
-
- -
|
107
|
+
- - ">="
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0'
|
110
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
111
|
requirements:
|
112
|
-
- -
|
112
|
+
- - ">="
|
113
113
|
- !ruby/object:Gem::Version
|
114
114
|
version: '0'
|
115
115
|
requirements: []
|
metadata.gz.sig
CHANGED
Binary file
|