ice_t 0.0.5 → 0.0.6
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 +32 -11
- data/ice_t.gemspec +0 -3
- data/lib/ice_t/time_helper.rb +5 -5
- data/lib/ice_t/version.rb +1 -1
- data/spec/rules/base_spec.rb +64 -0
- data/spec/support/shared_examples/rule_example.rb +0 -55
- metadata +1 -43
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cdf3d09149e3ebfc1e740bc9523814fdfbeadca4
|
|
4
|
+
data.tar.gz: 9f1e4c68ce2ed1f6c7b8aa33b22dba3221957e65
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 84cf215a1807c44ac151a6bfcdc4d11be647c7256140557e1093ffcf7e671f739fb305adfb1b5c88dce3700ae478d3c61ef0211adff1aa88e542b22097897da3
|
|
7
|
+
data.tar.gz: 082bf83e1f43e1d5fea4b9c374d9b3b6f98c3f9b05e7734f1a0c1b5daa5478c110ba2e67ccc36eb31f539b3b45e711b9da8168babc50749fcc1ef21420046d15
|
data/README.md
CHANGED
|
@@ -26,15 +26,20 @@ Or install it yourself as:
|
|
|
26
26
|
### Creating rules
|
|
27
27
|
|
|
28
28
|
```ruby
|
|
29
|
-
rule = IceT::Rule::Secondly.new(42) # =>
|
|
30
|
-
rule = IceT::Rule::Minutely.new(42) # =>
|
|
31
|
-
rule = IceT::Rule::Hourly.new(42) # =>
|
|
32
|
-
rule = IceT::Rule::Daily.new(42) # =>
|
|
33
|
-
rule = IceT::Rule::Weekly.new(42) # =>
|
|
34
|
-
rule = IceT::Rule::Monthly.new(42) # =>
|
|
35
|
-
rule = IceT::Rule::Yearly.new(42) # =>
|
|
29
|
+
rule = IceT::Rule::Secondly.new(42) # => every 42 seconds
|
|
30
|
+
rule = IceT::Rule::Minutely.new(42) # => every 42 minutes
|
|
31
|
+
rule = IceT::Rule::Hourly.new(42) # => every 42 hours
|
|
32
|
+
rule = IceT::Rule::Daily.new(42) # => every 42 days
|
|
33
|
+
rule = IceT::Rule::Weekly.new(42) # => every 42 weeks
|
|
34
|
+
rule = IceT::Rule::Monthly.new(42) # => every 42 months
|
|
35
|
+
rule = IceT::Rule::Yearly.new(42) # => every 42 years
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
+
```ruby
|
|
39
|
+
rule = IceT::Rule::Secondly.new # => every second
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
|
|
38
43
|
### Get time occurrences
|
|
39
44
|
|
|
40
45
|
```ruby
|
|
@@ -42,6 +47,7 @@ rule.occurrences # => Array of times
|
|
|
42
47
|
```
|
|
43
48
|
|
|
44
49
|
### Schedule
|
|
50
|
+
|
|
45
51
|
The Schedule helps on dealing with multiple rules.
|
|
46
52
|
|
|
47
53
|
```ruby
|
|
@@ -55,15 +61,14 @@ schedule.occurrences # => Merged occurrences
|
|
|
55
61
|
|
|
56
62
|
### Persistence
|
|
57
63
|
|
|
58
|
-
Lets say you want to your Schedule
|
|
59
|
-
and use it later again. You can do this:
|
|
64
|
+
Lets say you want to store and restore your Schedule. Do this:
|
|
60
65
|
|
|
61
66
|
```ruby
|
|
62
67
|
json = schedule.to_json
|
|
63
68
|
schedule = IceT::Schedule.from_json(json)
|
|
64
69
|
```
|
|
65
70
|
|
|
66
|
-
## Tipps -
|
|
71
|
+
## Tipps - section is under construction
|
|
67
72
|
|
|
68
73
|
### Sorting rules:
|
|
69
74
|
|
|
@@ -74,4 +79,20 @@ schedule = IceT::Schedule.from_json(json)
|
|
|
74
79
|
```ruby
|
|
75
80
|
IceT::Rule::Daily.new(1) < IceT::Rule::Monthly.new(1) # => true
|
|
76
81
|
```
|
|
77
|
-
|
|
82
|
+
|
|
83
|
+
r2.between?(r1, r3)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
## License
|
|
88
|
+
This software is released under the [MIT License](http://opensource.org/licenses/MIT).
|
|
89
|
+
|
|
90
|
+
Copyright © 2013 Christian Nennemann _(christian.nennemann[at]gmail[dot]com)_
|
|
91
|
+
|
|
92
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
93
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
94
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
95
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
96
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
97
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
98
|
+
THE SOFTWARE.
|
data/ice_t.gemspec
CHANGED
|
@@ -24,8 +24,5 @@ Gem::Specification.new do |spec|
|
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.3"
|
|
25
25
|
spec.add_development_dependency "rake"
|
|
26
26
|
spec.add_development_dependency "rspec", "~> 2.13"
|
|
27
|
-
spec.add_development_dependency "turnip"
|
|
28
|
-
spec.add_development_dependency "guard"
|
|
29
|
-
spec.add_development_dependency "guard-rspec"
|
|
30
27
|
|
|
31
28
|
end
|
data/lib/ice_t/time_helper.rb
CHANGED
|
@@ -3,11 +3,11 @@ module IceT
|
|
|
3
3
|
module_function
|
|
4
4
|
#
|
|
5
5
|
# Returns diff of two date by given unit
|
|
6
|
-
# @param Time start_time
|
|
7
|
-
# @param Time end_time
|
|
8
|
-
# @param Symbol unit
|
|
9
|
-
# @param Boolean round
|
|
10
|
-
# @return Integer|Float diff
|
|
6
|
+
# @param [Time] start_time
|
|
7
|
+
# @param [Time] end_time
|
|
8
|
+
# @param [Symbol] unit
|
|
9
|
+
# @param [Boolean] round return value as Integer or Float
|
|
10
|
+
# @return [Integer|Float] diff
|
|
11
11
|
def diff_by_unit(start_time, end_time, unit = :days, round = true)
|
|
12
12
|
diff = ((end_time - start_time) / eval("1.#{unit}"))
|
|
13
13
|
diff = (round) ? diff.round : diff
|
data/lib/ice_t/version.rb
CHANGED
data/spec/rules/base_spec.rb
CHANGED
|
@@ -2,6 +2,70 @@ require 'spec_helper'
|
|
|
2
2
|
|
|
3
3
|
describe IceT::Rule::Base do
|
|
4
4
|
|
|
5
|
+
describe 'descendants comparison' do
|
|
6
|
+
classes = IceT::Rule::Base.descendants.sort
|
|
7
|
+
classes.each_with_index { | obj, i |
|
|
8
|
+
describe "#{obj}" do
|
|
9
|
+
classes.each_with_index { | other, j |
|
|
10
|
+
case
|
|
11
|
+
when i == j
|
|
12
|
+
it "#{obj} == #{other}" do
|
|
13
|
+
expect(obj==other).to be_true
|
|
14
|
+
end
|
|
15
|
+
it "#{obj}.new(1) == #{other}.new(1)" do
|
|
16
|
+
expect(obj.new(1) == other.new(1)).to be_true
|
|
17
|
+
end
|
|
18
|
+
it "#{obj}.new(1) < #{other}.new(2)" do
|
|
19
|
+
expect(obj.new(1) < other.new(2)).to be_true
|
|
20
|
+
end
|
|
21
|
+
it "#{obj}.new(2) > #{other}.new(1)" do
|
|
22
|
+
expect(obj.new(2) > other.new(1)).to be_true
|
|
23
|
+
end
|
|
24
|
+
it "#{obj}.new(1) <= #{other}.new(1)" do
|
|
25
|
+
expect(obj.new(1) <= other.new(1)).to be_true
|
|
26
|
+
end
|
|
27
|
+
it "#{obj}.new(1) >= #{other}.new(1)" do
|
|
28
|
+
expect(obj.new(1) >= other.new(1)).to be_true
|
|
29
|
+
end
|
|
30
|
+
when i > j
|
|
31
|
+
it "#{obj} > #{other} is true" do
|
|
32
|
+
expect(obj > other).to be_true
|
|
33
|
+
end
|
|
34
|
+
it "#{obj} < #{other} is false" do
|
|
35
|
+
expect(obj < other).to be_false
|
|
36
|
+
end
|
|
37
|
+
it "#{obj} == #{other} is false" do
|
|
38
|
+
expect(obj == other).to be_false
|
|
39
|
+
end
|
|
40
|
+
it "#{obj}.new(1) > #{other}.new(1) is true" do
|
|
41
|
+
expect(obj.new(1) > other.new(1)).to be_true
|
|
42
|
+
end
|
|
43
|
+
it "#{obj}.new(1) < #{other}.new(1) is false" do
|
|
44
|
+
expect(obj.new(1) < other.new(1)).to be_false
|
|
45
|
+
end
|
|
46
|
+
it "#{obj}.new(1) == #{other}.new(1) is false" do
|
|
47
|
+
expect(obj.new(1) == other.new(1)).to be_false
|
|
48
|
+
end
|
|
49
|
+
when i < j
|
|
50
|
+
it "#{obj} < #{other} is true" do
|
|
51
|
+
expect(obj < other).to be_true
|
|
52
|
+
end
|
|
53
|
+
it "#{obj} > #{other} is false" do
|
|
54
|
+
expect(obj > other).to be_false
|
|
55
|
+
end
|
|
56
|
+
it "#{obj} == #{other} is false" do
|
|
57
|
+
expect(obj == other).to be_false
|
|
58
|
+
end
|
|
59
|
+
it "#{obj}.new(1) < #{other}.new(1)" do
|
|
60
|
+
expect(obj.new(1) < other.new(1)).to be_true
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
}
|
|
64
|
+
end
|
|
65
|
+
}
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
|
|
5
69
|
describe '.new' do
|
|
6
70
|
describe 'param: interval' do
|
|
7
71
|
context 'when valid' do
|
|
@@ -47,59 +47,4 @@ shared_examples 'a rule' do
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
describe 'comparison' do
|
|
51
|
-
classes = IceT::Rule::Base.descendants.sort
|
|
52
|
-
classes.each_with_index { | obj, i |
|
|
53
|
-
classes.each_with_index { | other, j |
|
|
54
|
-
case
|
|
55
|
-
when i == j
|
|
56
|
-
context 'on class level' do
|
|
57
|
-
it "#{obj} == #{other}" do
|
|
58
|
-
expect(obj==other).to be_true
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
context 'on instance level' do
|
|
62
|
-
it "#{obj}.new(1) == #{other}.new(1)" do
|
|
63
|
-
expect(obj.new(1) == other.new(1)).to be_true
|
|
64
|
-
end
|
|
65
|
-
it "#{obj}.new(1) < #{other}.new(2)" do
|
|
66
|
-
expect(obj.new(1) < other.new(2)).to be_true
|
|
67
|
-
end
|
|
68
|
-
it "#{obj}.new(2) > #{other}.new(1)" do
|
|
69
|
-
expect(obj.new(2) > other.new(1)).to be_true
|
|
70
|
-
end
|
|
71
|
-
it "#{obj}.new(1) <= #{other}.new(1)" do
|
|
72
|
-
expect(obj.new(1) <= other.new(1)).to be_true
|
|
73
|
-
end
|
|
74
|
-
it "#{obj}.new(1) >= #{other}.new(1)" do
|
|
75
|
-
expect(obj.new(1) >= other.new(1)).to be_true
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
when i > j
|
|
79
|
-
context 'on class level' do
|
|
80
|
-
it "#{obj} > #{other}" do
|
|
81
|
-
expect(obj > other).to be_true
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
context 'on instance level' do
|
|
85
|
-
it "#{obj}.new(1) > #{other}.new(1)" do
|
|
86
|
-
expect(obj.new(1) > other.new(1)).to be_true
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
when i < j
|
|
90
|
-
context 'on class level' do
|
|
91
|
-
it "#{obj} < #{other}" do
|
|
92
|
-
expect(obj < other).to be_true
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
context 'on instance level' do
|
|
96
|
-
it "#{obj}.new(1) < #{other}.new(1)" do
|
|
97
|
-
expect(obj.new(1) < other.new(1)).to be_true
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
end
|
|
104
|
-
|
|
105
50
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ice_t
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Christian Nennemann
|
|
@@ -66,48 +66,6 @@ dependencies:
|
|
|
66
66
|
- - ~>
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '2.13'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: turnip
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - '>='
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - '>='
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: guard
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - '>='
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - '>='
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: guard-rspec
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - '>='
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0'
|
|
104
|
-
type: :development
|
|
105
|
-
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
requirements:
|
|
108
|
-
- - '>='
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0'
|
|
111
69
|
description: IceT is a ruby library for handling repeated events
|
|
112
70
|
email:
|
|
113
71
|
- christian.nennemann@gmail.com
|