chronic_cron 0.2.16 → 0.2.17

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: 6a52bba0dc03a218eba9cf03cf536a92da1e0b18
4
- data.tar.gz: 60c510cc9a7527502d7aae13bdc895ba288d223b
3
+ metadata.gz: 8bfa9beb76e7abb91b85a3ccd52823c1d36b9873
4
+ data.tar.gz: d1bd4a8b022373d6b64c545e8a14d185b6cdb64f
5
5
  SHA512:
6
- metadata.gz: a6a5ee2e8a4a2d7d37803495677f04237288e7cff8dc8eadc883b7674bac9600e3f649421d76767adc130e3085502560a9d7611e281e13cbe74103700b6dd2b8
7
- data.tar.gz: 34bed762ce488b1b98e29aaace360dc9f4bba0361fc009f30fca6d8db521c05cd83cba9e436619774e5826989b0f77b1512ef9e5609dd2d837b1b9af8799eb95
6
+ metadata.gz: da41b6adb933b072841e64855f4120c2835d145d08fd1a3ae5106aba3acd8703de02cbfb074b3bb9247bcbdd244b900eea47d5c83ac484d9e1671ffe1b373edf
7
+ data.tar.gz: fa1ad5d0c0192ee15fff38c53b3b3410f97b34b8640f495dc6add91734e4766c9b13927814b9a355f8c81a16820b4b4f7d9127ad05e5d76fe98aa3c75631107a
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -14,19 +14,16 @@ class ChronicCron
14
14
  attr_reader :to_expression
15
15
 
16
16
  def initialize(s, now=Time.now)
17
+
17
18
  @now = now
19
+
18
20
  super()
19
- @params = {}
21
+ @params = {input: s}
20
22
  expressions(@params)
21
23
 
22
- @to_expression = find_expression(s.sub(/^(?:on|at)\s+/,''))
23
-
24
- if @to_expression.nil? then
25
- t = Chronic.parse(s)
26
- @to_expression = "%s %s %s %s * %s" % t.to_a.values_at(1,2,3,4,5)
27
- end
28
-
29
- @cf = CronFormat.new(@to_expression, now)
24
+ expression = find_expression(s.sub(/^(?:on|at)\s+/,''))
25
+ @cf = CronFormat.new(expression, now)
26
+ @to_expression = @cf.to_expression
30
27
 
31
28
  end
32
29
 
@@ -47,18 +44,42 @@ class ChronicCron
47
44
  get /(\d{1,2}):(\d{1,2})-(\d{1,2}):\d{1,2}\s+every day/ do
48
45
  "%s %s-%s * * *" % params[:captures].values_at(1,0,2)
49
46
  end
47
+
48
+ # e.g. every 30mins from 8:00am until 8:00pm mon-fri
49
+ get /every\s+(\d+)mins\s+from\s+(\d{1,2}):(\d{1,2})([ap]m)(?:\s+until\s+|\s*-\s*)(\d{1,2}):\d{1,2}([ap]m)\s+(\w+\-\w+)/ do
50
+ |interval_mins, r_hrs1, mins1, meridiem1, r_hrs2, meridiem2, wdays|
51
+ hrs1 = meridiem1 == 'pm' ? r_hrs1.to_i + 12 : r_hrs1
52
+ hrs2 = meridiem2 == 'pm' ? r_hrs2.to_i + 12 : r_hrs2
53
+ "%s/%s %s-%s * * %s" % [mins1.to_i, interval_mins, hrs1, hrs2, wdays]
54
+ end
50
55
 
56
+ # e.g. every 30mins from 8:00am until 8:00pm every day
57
+ get /every\s+(\d+)mins\s+from\s+(\d{1,2}):(\d{1,2})([ap]m)(?:\s+until\s+|\s*-\s*)(\d{1,2}):\d{1,2}([ap]m)\s+every day/ do
58
+ |interval_mins, r_hrs1, mins1, meridiem1, r_hrs2, meridiem2|
59
+ hrs1 = meridiem1 == 'pm' ? r_hrs1.to_i + 12 : r_hrs1
60
+ hrs2 = meridiem2 == 'pm' ? r_hrs2.to_i + 12 : r_hrs2
61
+ "%s/%s %s-%s * * *" % [mins1.to_i, interval_mins, hrs1, hrs2]
62
+ end
63
+
64
+ # e.g. 8:00am until 8:00pm every day
65
+ get /(\d{1,2}):(\d{1,2})([ap]m)(?:\s+until\s+|\s*-\s*)(\d{1,2}):\d{1,2}([ap]m)\s+every day/ do
66
+ |r_hrs1, mins1, meridiem1, r_hrs2, meridiem2|
67
+ hrs1 = meridiem1 == 'pm' ? r_hrs1.to_i + 12 : r_hrs1
68
+ hrs2 = meridiem2 == 'pm' ? r_hrs2.to_i + 12 : r_hrs2
69
+ "%s %s-%s * * *" % [mins1.to_i, hrs1, hrs2]
70
+ end
71
+
51
72
  # e.g. 10:15am every day
52
73
  get /(\d{1,2}):(\d{1,2})([ap]m)?\s+every day/ do |raw_hrs, mins, meridiem|
53
74
  hrs = meridiem == 'pm' ? raw_hrs.to_i + 12 : raw_hrs
54
- "%s %s * * *" % [mins, hrs]
75
+ "%s %s * * *" % [mins.to_i, hrs]
55
76
  end
56
77
 
57
78
  # e.g. at 7:30am Monday to Friday
58
79
  get /(\d{1,2}):(\d{1,2})([ap]m)?\s+(\w+) to (\w+)/ do
59
80
  |raw_hrs, mins, meridiem, wday1, wday2|
60
81
  hrs = meridiem == 'pm' ? raw_hrs.to_i + 12 : raw_hrs
61
- "%s %s * * %s-%s" % [mins, hrs , wday1, wday2]
82
+ "%s %s * * %s-%s" % [mins.to_i, hrs , wday1, wday2]
62
83
  end
63
84
 
64
85
  # e.g. at 11:00 and 16:00 on every day
@@ -82,6 +103,13 @@ class ChronicCron
82
103
  "%s %s * * %s" % [mins, hrs , wday]
83
104
  end
84
105
 
106
+ # e.g. at 10pm on every Monday
107
+ get /(\d{1,2})([ap]m)?\s+(?:on )?every (\w+)/ do
108
+ |raw_hrs, meridiem, wday|
109
+ hrs = meridiem == 'pm' ? raw_hrs.to_i + 12 : raw_hrs
110
+ "0 %s * * %s" % [hrs , wday]
111
+ end
112
+
85
113
  # e.g. every 10 minutes
86
114
  get(/every (\d{1,2}) min(?:ute)?s?/){|mins| "*/%s * * * *" % [mins]}
87
115
  get(/every min(?:ute)?/){"* * * * *"}
@@ -104,7 +132,25 @@ class ChronicCron
104
132
  )
105
133
  "%s %s %s %s *" % TimeToday.future.to_a[1..4]
106
134
  end
107
-
135
+
136
+ # e.g. every tuesday at 4pm
137
+ get /every\s+((?:mon|tue|wed|thu|fri|sat|sun)\w*)\s+at\s+(\d{1,2})([ap]m)/i do
138
+ |wday, raw_hrs, meridiem, |
139
+ hrs = meridiem == 'pm' ? raw_hrs.to_i + 12 : raw_hrs
140
+ "0 %s * * %s" % [hrs , wday]
141
+ end
142
+
143
+ # e.g. every tuesday at 4:40pm
144
+ get /every\s+((?:mon|tue|wed|thu|fri|sat|sun)\w*)\s+at\s+(\d{1,2}):(\d{1,2})([ap]m)/i do
145
+ |wday, raw_hrs, mins, meridiem, |
146
+ hrs = meridiem == 'pm' ? raw_hrs.to_i + 12 : raw_hrs
147
+ "%s %s * * %s" % [mins, hrs , wday]
148
+ end
149
+
150
+ get '*' do
151
+ t = Chronic.parse(params[:input])
152
+ "%s %s %s %s * %s" % t.to_a.values_at(1,2,3,4,5)
153
+ end
108
154
  end
109
155
 
110
156
  alias find_expression run_route
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.16
4
+ version: 0.2.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -29,7 +29,7 @@ cert_chain:
29
29
  aYYwh4InyS/QZr4LG0nh0TuYVP5vwm1cCSlLlo4dlv7bl7Q4y815j70z8O4oUrT8
30
30
  5oSIzmlVDEDmwAibYqdf+aHqmum1mkYW
31
31
  -----END CERTIFICATE-----
32
- date: 2013-07-11 00:00:00.000000000 Z
32
+ date: 2013-07-20 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: app-routes
metadata.gz.sig CHANGED
Binary file