chronic_cron 0.2.22 → 0.2.23

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6e9ea4752e7ad0897c73210502784661e2b28e3b
4
- data.tar.gz: 8be6295f0f7e8167c3dcef25a01edd9b32fdcd9b
3
+ metadata.gz: 0d7c7abf5cc1f534726e758672d9c323f78e3426
4
+ data.tar.gz: fea193074527c2868b5d9bb0bcdffc82375df313
5
5
  SHA512:
6
- metadata.gz: ff383491ee4acf1c7596c07f38a58430f510b556392d4fcfe115d4534ad0e1cdb463b0c9f839d8981a602e3f56c8ed6cbff1210d1c60b078e215d9042c6d5188
7
- data.tar.gz: 9b1c11cc9bdf367657cc61816cd7268de4909adf02e2d8c3d7c067789ccae867abec8d06d8aa736b3e5bc2144c7749f917c6e9367c351e3dc67116840bafdc0d
6
+ metadata.gz: 1b91b1730c74cbe6c6d336e298c7cdb4b3efe034dc72b05cb711326e899295570ea6c74ffa72574efc81864231ef5ab3446ceadf9b2908a4faf194bcb67836f5
7
+ data.tar.gz: 542d93e2005e754b5a37697674a12bb20908f4fe90ae01dbba0a72a764c2b604915133e5c1ff0a173f7410f35f4ba6427b839fca3cb5d2dae905a4d8d81137aa
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -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.22
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-08-13 00:00:00.000000000 Z
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