chronic_cron 0.2.19 → 0.2.20
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 +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
|