chronic_cron 0.2.33 → 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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/chronic_cron.rb +22 -43
- metadata +36 -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: 84b65bc4bc5c252fb22450e67c05a16f64024ae7
|
4
|
+
data.tar.gz: 130e04f60a902e99a43e7f9f16e1f751d4a0a65e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2cfd9db55885dd93049687fc463d3c747d4fa527c51bb19b7c3c489f44ad35bdc0ba486bbc5d542432e6e0ede35a3aa7b41d8e657a787ccd178346d6dd4ef1c
|
7
|
+
data.tar.gz: ea3ef3afac95a724db0220d546084aff31166b4f1ea67f9409cdd62f9a3a370d891d72035e4d5f214b24251c43c169d7f6ec0b34c33befc93545328f3a1ddd25
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/chronic_cron.rb
CHANGED
@@ -41,7 +41,7 @@ class ChronicCron
|
|
41
41
|
|
42
42
|
r = '[0-9\*,\?\/\-]+'
|
43
43
|
daily = '(?:every day|daily)'
|
44
|
-
|
44
|
+
|
45
45
|
# e.g. 00 5 15 * *
|
46
46
|
get /(#{r}\s+#{r}\s+#{r}\s#{r}\s#{r})(\s#{r})?/ do
|
47
47
|
"%s%s" % params[:captures]
|
@@ -103,7 +103,7 @@ class ChronicCron
|
|
103
103
|
get('monthly') {'0 0 1 * *'}
|
104
104
|
get('yearly') {'0 0 1 1 *'}
|
105
105
|
get('annually') {'0 0 1 1 *'}
|
106
|
-
|
106
|
+
|
107
107
|
weekday = '((?:mon|tue|wed|thu|fri|sat|sun)\w*)'
|
108
108
|
|
109
109
|
# e.g. at 10:30pm on every Monday
|
@@ -180,11 +180,20 @@ class ChronicCron
|
|
180
180
|
wday = a.index(a.grep(/#{day_of_week}/i).first)
|
181
181
|
|
182
182
|
raw_time ||= '6:00am'
|
183
|
+
|
183
184
|
minute, hour = Chronic.parse(raw_time).to_a[1,2]
|
184
185
|
"%s %s %s * %s" % [minute, hour, day_range, wday]
|
185
186
|
|
186
187
|
end
|
188
|
+
|
187
189
|
|
190
|
+
# e.g. every 2nd tuesday at 4:40pm
|
191
|
+
get /every\s+2nd\s+#{weekday}\s+at\s+(\d{1,2})(?::(\d{1,2}))?([ap]m)/i do
|
192
|
+
|wday, raw_hrs, mins, meridiem, |
|
193
|
+
hrs = in24hrs(raw_hrs, meridiem)
|
194
|
+
"%s %s * * %s/2" % [mins.to_i, hrs , wday]
|
195
|
+
end
|
196
|
+
|
188
197
|
# e.g. every tuesday at 4:40pm
|
189
198
|
get /every\s+#{weekday}\s+at\s+(\d{1,2}):(\d{1,2})([ap]m)/i do
|
190
199
|
|wday, raw_hrs, mins, meridiem, |
|
@@ -192,54 +201,24 @@ class ChronicCron
|
|
192
201
|
"%s %s * * %s" % [mins, hrs , wday]
|
193
202
|
end
|
194
203
|
|
195
|
-
|
196
204
|
|
197
205
|
# e.g. every 2nd week at 6am starting from 7th Jan
|
198
|
-
get /every
|
199
|
-
|nth_week, raw_time, raw_date|
|
200
|
-
|
201
|
-
# |nth_week, day_of_week, time|
|
206
|
+
get /every 2nd week\s+at\s+([^\s]+)/ do |raw_time|
|
202
207
|
|
208
|
+
t = Chronic.parse(raw_time, :now => @now)
|
203
209
|
|
204
|
-
|
205
|
-
h = {
|
206
|
-
/first|1st/i => 0,
|
207
|
-
/second|2nd/i => 1,
|
208
|
-
/third|3rd/i => 2,
|
209
|
-
/fourth|4th|last/i => 3
|
210
|
-
}
|
211
|
-
|
212
|
-
_, nweek = h.find{|k,_| nth_week[k]}
|
213
|
-
|
214
|
-
month = @now.month
|
215
|
-
date = Time.local(@now.year, month, 1)
|
216
|
-
t = Chronic.parse(raw_date + ' ' + raw_time, :now => date)
|
217
|
-
|
218
|
-
def make_date(day_of_week, month, time, nweek)
|
219
|
-
|
220
|
-
Chronic.parse([day_of_week,month,time].join(' '), :now => @now) \
|
221
|
-
+ WEEK * nweek
|
222
|
-
end
|
223
|
-
|
224
|
-
if t < @now
|
225
|
-
day_of_week = Date::DAYNAMES[t.wday]
|
226
|
-
months = Date::MONTHNAMES
|
227
|
-
t = make_date(day_of_week, months.rotate[month], raw_time, nweek)
|
228
|
-
end
|
229
|
-
|
230
|
-
"%s %s %s %s * %s" % t.to_a.values_at(1,2,3,4,5)
|
210
|
+
"%s %s * * %s/2" % [t.min,t.hour,t.wday]
|
231
211
|
|
232
212
|
end
|
233
213
|
|
234
214
|
# e.g. every 2 weeks at 6am starting from 7th Jan
|
235
|
-
get /every (\w+) weeks\s+(?:at\s+([^\s]+)
|
236
|
-
|interval, raw_time, raw_date|
|
215
|
+
get /every (\w+) weeks\s+(?:at\s+([^\s]+))?/ do |interval, raw_time|
|
237
216
|
|
238
|
-
t = Chronic.parse(
|
217
|
+
t = Chronic.parse(raw_time, :now => @now)
|
239
218
|
t += WEEK * interval.to_i until t > @now
|
240
|
-
mins, hrs
|
219
|
+
mins, hrs = t.to_a.values_at(1,2)
|
241
220
|
|
242
|
-
"%s %s
|
221
|
+
"%s %s * * %s/%s" % [mins, hrs, t.wday, interval]
|
243
222
|
end
|
244
223
|
|
245
224
|
|
@@ -247,8 +226,8 @@ class ChronicCron
|
|
247
226
|
get /(.*) every (\d) weeks/ do |raw_date, interval|
|
248
227
|
|
249
228
|
t = Chronic.parse(raw_date, :now => @now)
|
250
|
-
mins, hrs
|
251
|
-
"%s %s
|
229
|
+
mins, hrs = t.to_a.values_at(1,2)
|
230
|
+
"%s %s * * %s/%s" % [mins, hrs, t.wday, interval]
|
252
231
|
end
|
253
232
|
|
254
233
|
# e.g. from 05-Aug@12:34 fortnightly
|
@@ -269,7 +248,7 @@ class ChronicCron
|
|
269
248
|
|
270
249
|
# e.g. 04-Aug@12:34
|
271
250
|
get '*' do
|
272
|
-
|
251
|
+
|
273
252
|
t = Chronic.parse(params[:input], :now => @now)
|
274
253
|
"%s %s %s %s * %s" % t.to_a.values_at(1,2,3,4,5)
|
275
254
|
end
|
@@ -286,4 +265,4 @@ class ChronicCron
|
|
286
265
|
|
287
266
|
alias find_expression run_route
|
288
267
|
|
289
|
-
end
|
268
|
+
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.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -31,64 +31,88 @@ cert_chain:
|
|
31
31
|
nWO4x6WpqjcmB1Woj5XGJhRoWqPEdpB7dv+oitT+rBDJnsYAVXx50tBSE8iv+u11
|
32
32
|
9OUH3bEVRYl7Cg==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
34
|
+
date: 2015-01-16 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: app-routes
|
38
38
|
requirement: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0.1'
|
40
43
|
- - ">="
|
41
44
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
45
|
+
version: 0.1.18
|
43
46
|
type: :runtime
|
44
47
|
prerelease: false
|
45
48
|
version_requirements: !ruby/object:Gem::Requirement
|
46
49
|
requirements:
|
50
|
+
- - "~>"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0.1'
|
47
53
|
- - ">="
|
48
54
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
55
|
+
version: 0.1.18
|
50
56
|
- !ruby/object:Gem::Dependency
|
51
57
|
name: cron_format
|
52
58
|
requirement: !ruby/object:Gem::Requirement
|
53
59
|
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.2'
|
54
63
|
- - ">="
|
55
64
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
65
|
+
version: 0.2.0
|
57
66
|
type: :runtime
|
58
67
|
prerelease: false
|
59
68
|
version_requirements: !ruby/object:Gem::Requirement
|
60
69
|
requirements:
|
70
|
+
- - "~>"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0.2'
|
61
73
|
- - ">="
|
62
74
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
75
|
+
version: 0.2.0
|
64
76
|
- !ruby/object:Gem::Dependency
|
65
77
|
name: chronic
|
66
78
|
requirement: !ruby/object:Gem::Requirement
|
67
79
|
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.10'
|
68
83
|
- - ">="
|
69
84
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
85
|
+
version: 0.10.2
|
71
86
|
type: :runtime
|
72
87
|
prerelease: false
|
73
88
|
version_requirements: !ruby/object:Gem::Requirement
|
74
89
|
requirements:
|
90
|
+
- - "~>"
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0.10'
|
75
93
|
- - ">="
|
76
94
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
95
|
+
version: 0.10.2
|
78
96
|
- !ruby/object:Gem::Dependency
|
79
97
|
name: timetoday
|
80
98
|
requirement: !ruby/object:Gem::Requirement
|
81
99
|
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0.1'
|
82
103
|
- - ">="
|
83
104
|
- !ruby/object:Gem::Version
|
84
|
-
version:
|
105
|
+
version: 0.1.9
|
85
106
|
type: :runtime
|
86
107
|
prerelease: false
|
87
108
|
version_requirements: !ruby/object:Gem::Requirement
|
88
109
|
requirements:
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0.1'
|
89
113
|
- - ">="
|
90
114
|
- !ruby/object:Gem::Version
|
91
|
-
version:
|
115
|
+
version: 0.1.9
|
92
116
|
description:
|
93
117
|
email: james@r0bertson.co.uk
|
94
118
|
executables: []
|
@@ -108,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
132
|
requirements:
|
109
133
|
- - ">="
|
110
134
|
- !ruby/object:Gem::Version
|
111
|
-
version:
|
135
|
+
version: 2.1.2
|
112
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
137
|
requirements:
|
114
138
|
- - ">="
|
@@ -116,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
116
140
|
version: '0'
|
117
141
|
requirements: []
|
118
142
|
rubyforge_project:
|
119
|
-
rubygems_version: 2.
|
143
|
+
rubygems_version: 2.2.2
|
120
144
|
signing_key:
|
121
145
|
specification_version: 4
|
122
146
|
summary: chronic_cron
|
metadata.gz.sig
CHANGED
Binary file
|