chronic_cron 0.2.19 → 0.2.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/chronic_cron.rb +42 -12
- metadata +2 -2
- 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: 853b5f2a3c7ee683d680e2304124c46a6b9aa178
|
4
|
+
data.tar.gz: ce201e7682eba76ec3a29ccbe8b11a1d2ce6168b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82310745fcde76212ada8ac07920994eaca560974e800a7138f115651cbf13e62f1f3890df7105fbb13f5c5555c3b43b336631fce5075ba9be5ac18fafc25dfb
|
7
|
+
data.tar.gz: 17dfb8016753beaa8b7d96b54191ad6f6126c17ad14be4ddbba36ff7dd38db99e50d5d1f910fc86038b2192c8be506e27de2680865bebf1b6d324a2cee9aad7d
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/chronic_cron.rb
CHANGED
@@ -21,12 +21,17 @@ class ChronicCron
|
|
21
21
|
@params = {input: s}
|
22
22
|
expressions(@params)
|
23
23
|
|
24
|
-
expression = find_expression(s.sub(/^(?:on|at)\s+/,''))
|
24
|
+
expression = find_expression(s.sub(/^(?:on|at|from|starting)\s+/,''))
|
25
25
|
@cf = CronFormat.new(expression, now)
|
26
26
|
@to_expression = @cf.to_expression
|
27
27
|
|
28
28
|
end
|
29
29
|
|
30
|
+
def inspect()
|
31
|
+
"#<ChronicCron:%s @to_expression=\"%s\", @to_time=\"%s\">" %
|
32
|
+
[self.object_id, @to_expression, @cf.to_time]
|
33
|
+
end
|
34
|
+
|
30
35
|
def next() @cf.next end
|
31
36
|
def to_time() @cf.to_time end
|
32
37
|
|
@@ -35,26 +40,29 @@ class ChronicCron
|
|
35
40
|
def expressions(params)
|
36
41
|
|
37
42
|
r = '[0-9\*,\?\/\-]+'
|
43
|
+
daily = '(?:every day|daily)'
|
44
|
+
|
38
45
|
# e.g. 00 5 15 * *
|
39
46
|
get /(#{r}\s+#{r}\s+#{r}\s#{r}\s#{r})(\s#{r})?/ do
|
40
47
|
"%s%s" % params[:captures]
|
41
48
|
end
|
42
49
|
|
43
50
|
# e.g. 9:00-18:00 every day
|
44
|
-
get /(\d{1,2}):(\d{1,2})-(\d{1,2}):\d{1,2}\s
|
51
|
+
get /(\d{1,2}):(\d{1,2})-(\d{1,2}):\d{1,2}\s+#{daily}/ do
|
45
52
|
"%s %s-%s * * *" % params[:captures].values_at(1,0,2)
|
46
53
|
end
|
47
54
|
|
48
55
|
# e.g. every 30mins from 8:00am until 8:00pm mon-fri
|
49
56
|
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
57
|
|interval_mins, r_hrs1, mins1, meridiem1, r_hrs2, meridiem2, wdays|
|
58
|
+
puts 'cute'
|
51
59
|
hrs1 = meridiem1 == 'pm' ? r_hrs1.to_i + 12 : r_hrs1
|
52
60
|
hrs2 = meridiem2 == 'pm' ? r_hrs2.to_i + 12 : r_hrs2
|
53
61
|
"%s/%s %s-%s * * %s" % [mins1.to_i, interval_mins, hrs1, hrs2, wdays]
|
54
62
|
end
|
55
63
|
|
56
64
|
# 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
|
65
|
+
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+#{daily}/ do
|
58
66
|
|interval_mins, r_hrs1, mins1, meridiem1, r_hrs2, meridiem2|
|
59
67
|
hrs1 = meridiem1 == 'pm' ? r_hrs1.to_i + 12 : r_hrs1
|
60
68
|
hrs2 = meridiem2 == 'pm' ? r_hrs2.to_i + 12 : r_hrs2
|
@@ -62,7 +70,7 @@ class ChronicCron
|
|
62
70
|
end
|
63
71
|
|
64
72
|
# 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
|
73
|
+
get /(\d{1,2}):(\d{1,2})([ap]m)(?:\s+until\s+|\s*-\s*)(\d{1,2}):\d{1,2}([ap]m)\s+#{daily}/ do
|
66
74
|
|r_hrs1, mins1, meridiem1, r_hrs2, meridiem2|
|
67
75
|
hrs1 = meridiem1 == 'pm' ? r_hrs1.to_i + 12 : r_hrs1
|
68
76
|
hrs2 = meridiem2 == 'pm' ? r_hrs2.to_i + 12 : r_hrs2
|
@@ -70,8 +78,9 @@ class ChronicCron
|
|
70
78
|
end
|
71
79
|
|
72
80
|
# e.g. 10:15am every day
|
73
|
-
get /(\d{1,2}):(\d{1,2})([ap]m)?\s
|
81
|
+
get /(\d{1,2}):(\d{1,2})([ap]m)?\s+#{daily}/ do |raw_hrs, mins, meridiem|
|
74
82
|
hrs = meridiem == 'pm' ? raw_hrs.to_i + 12 : raw_hrs
|
83
|
+
puts 'book'
|
75
84
|
"%s %s * * *" % [mins.to_i, hrs]
|
76
85
|
end
|
77
86
|
|
@@ -83,7 +92,7 @@ class ChronicCron
|
|
83
92
|
end
|
84
93
|
|
85
94
|
# e.g. at 11:00 and 16:00 on every day
|
86
|
-
get /(\d{1,2}):(\d{1,2}) and (\d{1,2}):\d{1,2} (?:on )
|
95
|
+
get /(\d{1,2}):(\d{1,2}) and (\d{1,2}):\d{1,2} (?:on )?#{daily}/ do
|
87
96
|
"%s %s,%s * * *" % params[:captures].values_at(1,0,2)
|
88
97
|
end
|
89
98
|
|
@@ -96,15 +105,18 @@ class ChronicCron
|
|
96
105
|
get('yearly') {'0 0 1 1 *'}
|
97
106
|
get('annually') {'0 0 1 1 *'}
|
98
107
|
|
108
|
+
weekday = '((?:mon|tue|wed|thu|fri|sat|sun)\w*)'
|
109
|
+
|
99
110
|
# e.g. at 10:30pm on every Monday
|
100
|
-
get /(\d{1,2}):(\d{1,2})([ap]m)?\s+(?:on )?every
|
111
|
+
get /(\d{1,2}):(\d{1,2})([ap]m)?\s+(?:on )?every #{weekday}/i do
|
101
112
|
|raw_hrs, mins, meridiem, wday|
|
102
113
|
hrs = meridiem == 'pm' ? raw_hrs.to_i + 12 : raw_hrs
|
114
|
+
puts 'hmmm'
|
103
115
|
"%s %s * * %s" % [mins, hrs , wday]
|
104
116
|
end
|
105
117
|
|
106
118
|
# e.g. at 10pm on every Monday
|
107
|
-
get /(\d{1,2})([ap]m)?\s+(?:on )?every
|
119
|
+
get /(\d{1,2})([ap]m)?\s+(?:on )?every #{weekday}/i do
|
108
120
|
|raw_hrs, meridiem, wday|
|
109
121
|
hrs = meridiem == 'pm' ? raw_hrs.to_i + 12 : raw_hrs
|
110
122
|
"0 %s * * %s" % [hrs , wday]
|
@@ -120,7 +132,7 @@ class ChronicCron
|
|
120
132
|
|
121
133
|
# e.g. every 2 days
|
122
134
|
get(/every (\d{1,2}) days?/){|days| "* * */%s * *" % [days]}
|
123
|
-
get(/
|
135
|
+
get(/#{daily}/){ "0 0 * * *"}
|
124
136
|
|
125
137
|
get /any\s?time today/ do
|
126
138
|
self.instance_eval %q(
|
@@ -134,20 +146,21 @@ class ChronicCron
|
|
134
146
|
end
|
135
147
|
|
136
148
|
# e.g. every tuesday at 4pm
|
137
|
-
get /every\s
|
149
|
+
get /every\s+#{weekday}\s+at\s+(\d{1,2})([ap]m)/i do
|
138
150
|
|wday, raw_hrs, meridiem, |
|
139
151
|
hrs = meridiem == 'pm' ? raw_hrs.to_i + 12 : raw_hrs
|
140
152
|
"0 %s * * %s" % [hrs , wday]
|
141
153
|
end
|
142
154
|
|
143
155
|
# e.g. every tuesday at 4:40pm
|
144
|
-
get /every\s
|
156
|
+
get /every\s+#{weekday}\s+at\s+(\d{1,2}):(\d{1,2})([ap]m)/i do
|
145
157
|
|wday, raw_hrs, mins, meridiem, |
|
146
158
|
hrs = meridiem == 'pm' ? raw_hrs.to_i + 12 : raw_hrs
|
159
|
+
puts 'coo'
|
147
160
|
"%s %s * * %s" % [mins, hrs , wday]
|
148
161
|
end
|
149
162
|
|
150
|
-
|
163
|
+
# e.g. starting 05-Aug@15:03 every 2 weeks
|
151
164
|
get /(.*) every (\d) weeks/ do |raw_date, interval|
|
152
165
|
|
153
166
|
t = Chronic.parse(raw_date)
|
@@ -155,6 +168,23 @@ class ChronicCron
|
|
155
168
|
"%s %s %s %s %s/%s %s" % [mins, hrs, day, month, t.wday, interval, year]
|
156
169
|
end
|
157
170
|
|
171
|
+
# e.g. from 05-Aug@12:34 fortnightly
|
172
|
+
get /(.*)\s+(?:biweekly|fortnightly)/ do |raw_date|
|
173
|
+
|
174
|
+
t = Chronic.parse(raw_date)
|
175
|
+
mins, hrs, day, month, year = t.to_a.values_at(1,2,3,4,5)
|
176
|
+
"%s %s %s %s %s/2 %s" % [mins, hrs, day, month, t.wday, year]
|
177
|
+
end
|
178
|
+
|
179
|
+
# e.g. from 06-Aug@1pm every week
|
180
|
+
get /(.*)\s+(?:weekly|every week)/ do |raw_date|
|
181
|
+
|
182
|
+
t = Chronic.parse(raw_date)
|
183
|
+
mins, hrs, day, month, year = t.to_a.values_at(1,2,3,4,5)
|
184
|
+
"%s %s %s %s %s %s" % [mins, hrs, day, month, t.wday, year]
|
185
|
+
end
|
186
|
+
|
187
|
+
# e.g. 04-Aug@12:34
|
158
188
|
get '*' do
|
159
189
|
|
160
190
|
t = Chronic.parse(params[:input])
|
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.20
|
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-08-
|
32
|
+
date: 2013-08-06 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
|