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 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