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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 47b0ea744fa7e77efc5ec721eb6fca1bcad81660
4
- data.tar.gz: b6bb72784ba74696827041ad09ba5ef64c70f288
3
+ metadata.gz: 853b5f2a3c7ee683d680e2304124c46a6b9aa178
4
+ data.tar.gz: ce201e7682eba76ec3a29ccbe8b11a1d2ce6168b
5
5
  SHA512:
6
- metadata.gz: 5e3d02e52753d8b49fd13f846e552abdc58e05e3e954a03dde7c234cd08cb85d304bc5f3cf861471938c6934aedbb80b662ecfb98345abff1e587995f47d3512
7
- data.tar.gz: 8b05d09f7c3b335f672aa62f8a4145b4de43625c2f37a8515282f904ff510d91a469ca7489be68a192c2a4a34f391e67bdc0d8ed7604da1bea7beb7fb1778ed1
6
+ metadata.gz: 82310745fcde76212ada8ac07920994eaca560974e800a7138f115651cbf13e62f1f3890df7105fbb13f5c5555c3b43b336631fce5075ba9be5ac18fafc25dfb
7
+ data.tar.gz: 17dfb8016753beaa8b7d96b54191ad6f6126c17ad14be4ddbba36ff7dd38db99e50d5d1f910fc86038b2192c8be506e27de2680865bebf1b6d324a2cee9aad7d
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -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+every day/ do
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+every day/ do
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+every day/ do
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+every day/ do |raw_hrs, mins, meridiem|
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 )?every day/ do
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 (\w+)/ do
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 ((?:mon|tue|wed|thu|fri|sat|sun)\w*)/i do
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(/every day/){ "0 0 * * *"}
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+((?:mon|tue|wed|thu|fri|sat|sun)\w*)\s+at\s+(\d{1,2})([ap]m)/i do
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+((?:mon|tue|wed|thu|fri|sat|sun)\w*)\s+at\s+(\d{1,2}):(\d{1,2})([ap]m)/i do
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.19
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-05 00:00:00.000000000 Z
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