ice_cube_cron 0.0.1 → 0.0.2
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
- data/README.md +4 -2
- data/lib/ice_cube_cron.rb +1 -0
- data/lib/ice_cube_cron/base.rb +2 -10
- data/lib/ice_cube_cron/extension.rb +13 -0
- data/lib/ice_cube_cron/version.rb +1 -1
- data/spec/lib/ice_cube_cron/base_spec.rb +13 -13
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7aa5090dd5b494487fe66f7f731bed0b90b59ce
|
4
|
+
data.tar.gz: 7822df6b8b1d227cb23ad9e64f7db313084476b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92b1a9335aaa0dbc98bcb5ef7966d17da696567158c7afd6e1308b19d2118564928cd233e89e19017a4da8bba3003c1761057156a0f8d9d43d2e1a9031a08281
|
7
|
+
data.tar.gz: f884daabb064dc2ab03802bef9cf9361cd05ac1b2e85d91e190b1d35d28fb67b19ac29940cb9f2e5561b44c0da6ce386ce9ebc5569ce45314a2657e89ce6c7c1
|
data/README.md
CHANGED
@@ -35,14 +35,16 @@ Cron expression can be specified using a hash or a string in the format:
|
|
35
35
|
|
36
36
|
|
37
37
|
```ruby
|
38
|
+
require 'ice_cube_cron'
|
39
|
+
|
38
40
|
# using cron expression string (not supported yet)
|
39
41
|
schedule = ::IceCube::Schedule.from_cron(::Date.current, "* * * * 5")
|
40
42
|
|
41
43
|
# using hash
|
42
|
-
schedule = ::IceCube::Schedule.from_cron(::Date.
|
44
|
+
schedule = ::IceCube::Schedule.from_cron(::Date.new(2015, 1, 5), :repeat_day => 5)
|
43
45
|
|
44
46
|
schedule.occurrences_between(::Date.new(2015, 3, 5), ::Date.new(2015, 6, 5))
|
45
|
-
# => [2015-03-05, 2015-04-05, 2015-06-05]
|
47
|
+
# => [2015-03-05 00:00:00 UTC, 2015-04-05 00:00:00 UTC, 2015-05-05 00:00:00 UTC, 2015-06-05 00:00:00 UTC]
|
46
48
|
```
|
47
49
|
|
48
50
|
## recurrence rule examples (date)
|
data/lib/ice_cube_cron.rb
CHANGED
data/lib/ice_cube_cron/base.rb
CHANGED
@@ -1,13 +1,5 @@
|
|
1
1
|
module IceCube
|
2
|
-
class
|
3
|
-
|
4
|
-
expression_parser = ::IceCubeCron::ExpressionParser.new(expression)
|
5
|
-
rule = ::IceCubeCron::RuleBuilder.new.build_rule(expression_parser)
|
6
|
-
|
7
|
-
schedule = ::IceCube::Schedule.new(::IceCubeCron::Util.sanitize_date_param(start_time))
|
8
|
-
schedule.add_recurrence_rule(rule)
|
9
|
-
|
10
|
-
schedule
|
11
|
-
end
|
2
|
+
class Schedule
|
3
|
+
extend ::IceCubeCron::Extension
|
12
4
|
end
|
13
5
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module IceCubeCron
|
2
|
+
module Extension
|
3
|
+
def from_cron(start_time, expression = {})
|
4
|
+
expression_parser = ::IceCubeCron::ExpressionParser.new(expression)
|
5
|
+
rule = ::IceCubeCron::RuleBuilder.new.build_rule(expression_parser)
|
6
|
+
|
7
|
+
schedule = ::IceCube::Schedule.new(::IceCubeCron::Util.sanitize_date_param(start_time))
|
8
|
+
schedule.add_recurrence_rule(rule)
|
9
|
+
|
10
|
+
schedule
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe ::IceCubeCron do
|
4
4
|
context 'repeat options' do
|
5
5
|
describe 'monthly' do
|
6
|
-
let(:ice_cube_model) { ::IceCube.from_cron(::Date.new(2015, 7, 1), :repeat_day => '1') }
|
6
|
+
let(:ice_cube_model) { ::IceCube::Schedule.from_cron(::Date.new(2015, 7, 1), :repeat_day => '1') }
|
7
7
|
|
8
8
|
it 'for same day' do
|
9
9
|
expect(ice_cube_model.occurrences_between(::Date.new(2015, 7, 1), ::Date.new(2015, 7, 1))).to eq([::Date.new(2015, 7, 1)])
|
@@ -15,7 +15,7 @@ describe ::IceCubeCron do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
describe 'twice monthly' do
|
18
|
-
let(:ice_cube_model) { ::IceCube.from_cron(::Date.new(2015, 7, 1), :repeat_day => '1,15') }
|
18
|
+
let(:ice_cube_model) { ::IceCube::Schedule.from_cron(::Date.new(2015, 7, 1), :repeat_day => '1,15') }
|
19
19
|
|
20
20
|
it 'for one month' do
|
21
21
|
expect(ice_cube_model.occurrences_between(::Date.new(2015, 7, 1), ::Date.new(2015, 7, 31))).to eq([::Date.new(2015, 7, 1), ::Date.new(2015, 7, 15)])
|
@@ -28,7 +28,7 @@ describe ::IceCubeCron do
|
|
28
28
|
|
29
29
|
describe 'bi-monthly' do
|
30
30
|
let(:ice_cube_model) do
|
31
|
-
::IceCube.from_cron(
|
31
|
+
::IceCube::Schedule.from_cron(
|
32
32
|
::Date.new(2015, 5, 1),
|
33
33
|
:repeat_day => '1',
|
34
34
|
:repeat_interval => '2'
|
@@ -46,7 +46,7 @@ describe ::IceCubeCron do
|
|
46
46
|
|
47
47
|
describe 'every week' do
|
48
48
|
let(:ice_cube_model) do
|
49
|
-
::IceCube.from_cron(
|
49
|
+
::IceCube::Schedule.from_cron(
|
50
50
|
::Date.new(2015, 7, 6),
|
51
51
|
:repeat_weekday => '1'
|
52
52
|
)
|
@@ -85,7 +85,7 @@ describe ::IceCubeCron do
|
|
85
85
|
|
86
86
|
describe 'bi-weekly' do
|
87
87
|
let(:ice_cube_model) do
|
88
|
-
::IceCube.from_cron(
|
88
|
+
::IceCube::Schedule.from_cron(
|
89
89
|
::Date.new(2015, 7, 6),
|
90
90
|
:repeat_weekday => '1',
|
91
91
|
:repeat_interval => '2'
|
@@ -125,7 +125,7 @@ describe ::IceCubeCron do
|
|
125
125
|
|
126
126
|
describe 'annually' do
|
127
127
|
let(:ice_cube_model) do
|
128
|
-
::IceCube.from_cron(
|
128
|
+
::IceCube::Schedule.from_cron(
|
129
129
|
::Date.new(2015, 1, 1),
|
130
130
|
:repeat_month => 2
|
131
131
|
)
|
@@ -142,7 +142,7 @@ describe ::IceCubeCron do
|
|
142
142
|
|
143
143
|
describe 'bi-annually' do
|
144
144
|
let(:ice_cube_model) do
|
145
|
-
::IceCube.from_cron(
|
145
|
+
::IceCube::Schedule.from_cron(
|
146
146
|
::Date.new(2015, 1, 1),
|
147
147
|
:repeat_interval => 2,
|
148
148
|
:repeat_month => 2,
|
@@ -158,7 +158,7 @@ describe ::IceCubeCron do
|
|
158
158
|
describe 'last weekday of month' do
|
159
159
|
context '31 day month' do
|
160
160
|
let(:ice_cube_model) do
|
161
|
-
::IceCube.from_cron(
|
161
|
+
::IceCube::Schedule.from_cron(
|
162
162
|
::Date.new(2015, 1, 1),
|
163
163
|
:repeat_weekday => '5L'
|
164
164
|
)
|
@@ -171,7 +171,7 @@ describe ::IceCubeCron do
|
|
171
171
|
|
172
172
|
context '29 day month' do
|
173
173
|
let(:ice_cube_model) do
|
174
|
-
::IceCube.from_cron(
|
174
|
+
::IceCube::Schedule.from_cron(
|
175
175
|
::Date.new(2015, 1, 1),
|
176
176
|
:repeat_weekday => '3L'
|
177
177
|
)
|
@@ -186,7 +186,7 @@ describe ::IceCubeCron do
|
|
186
186
|
describe 'last day of month' do
|
187
187
|
context '31 day month' do
|
188
188
|
let(:ice_cube_model) do
|
189
|
-
::IceCube.from_cron(
|
189
|
+
::IceCube::Schedule.from_cron(
|
190
190
|
::Date.new(2015, 1, 1),
|
191
191
|
:repeat_day => 'L'
|
192
192
|
)
|
@@ -200,7 +200,7 @@ describe ::IceCubeCron do
|
|
200
200
|
|
201
201
|
describe 'Nth day of week of month' do
|
202
202
|
let(:ice_cube_model) do
|
203
|
-
::IceCube.from_cron(
|
203
|
+
::IceCube::Schedule.from_cron(
|
204
204
|
::Date.new(2015, 1, 1),
|
205
205
|
:repeat_weekday => '1#2'
|
206
206
|
)
|
@@ -218,7 +218,7 @@ describe ::IceCubeCron do
|
|
218
218
|
|
219
219
|
context 'input types' do
|
220
220
|
it 'handles ::DateTime as input' do
|
221
|
-
ice_cube_model = ::IceCube.from_cron(
|
221
|
+
ice_cube_model = ::IceCube::Schedule.from_cron(
|
222
222
|
::DateTime.new(2015, 5, 1),
|
223
223
|
:repeat_day => '1',
|
224
224
|
:repeat_interval => '2'
|
@@ -227,7 +227,7 @@ describe ::IceCubeCron do
|
|
227
227
|
end
|
228
228
|
|
229
229
|
it 'handles integer (epoch) as input' do
|
230
|
-
ice_cube_model = ::IceCube.from_cron(
|
230
|
+
ice_cube_model = ::IceCube::Schedule.from_cron(
|
231
231
|
1_430_438_400, # Fri, 01 May 2015 00:00:00 GMT
|
232
232
|
:repeat_day => '1',
|
233
233
|
:repeat_interval => '2'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ice_cube_cron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Nichols
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- lib/ice_cube_cron.rb
|
115
115
|
- lib/ice_cube_cron/base.rb
|
116
116
|
- lib/ice_cube_cron/expression_parser.rb
|
117
|
+
- lib/ice_cube_cron/extension.rb
|
117
118
|
- lib/ice_cube_cron/rule_builder.rb
|
118
119
|
- lib/ice_cube_cron/util.rb
|
119
120
|
- lib/ice_cube_cron/version.rb
|