timerage 1.6.0 → 1.7.0
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/lib/timerage/time_interval.rb +6 -10
- data/lib/timerage/version.rb +1 -1
- data/spec/timerage/time_interval_spec.rb +19 -13
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40613d0f6bc616f4623f8978981997ca2d67ffeb
|
4
|
+
data.tar.gz: 287598ce1d9d8cb045f57a5921cbdaa083186af9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2eaa461baf4a4a4dbcded999f71a9b622934c58021c19fb127c1fc66a5c8c38741dabdeaa8a1a70a7e74fcaab6056dab8bf56ea9a2c7794ee5a423300786286
|
7
|
+
data.tar.gz: c9d95fa2485232f2dc1da1d9b70ba056a5ca0877dbc2800e6f16e67b00beb834f6052262d80ecfd1f61a5ceb824c26020605b486e33a86f05a2fa00811c402fe
|
@@ -15,6 +15,11 @@ module Timerage
|
|
15
15
|
|
16
16
|
alias_method :to_time, :begin
|
17
17
|
|
18
|
+
# Returns number of seconds in this interval
|
19
|
+
def duration
|
20
|
+
self.end - self.begin
|
21
|
+
end
|
22
|
+
|
18
23
|
def step(n, &blk)
|
19
24
|
if block_given?
|
20
25
|
time_enumerator(n).each(&blk)
|
@@ -27,19 +32,10 @@ module Timerage
|
|
27
32
|
time_enumerator(seconds)
|
28
33
|
.map{|t|
|
29
34
|
end_time = [t+seconds, self.end].min
|
30
|
-
inclusive = (
|
35
|
+
inclusive = (t == end_time || t+seconds > self.end) && !exclude_end?
|
31
36
|
TimeInterval.new(t, end_time, !inclusive) }
|
32
37
|
end
|
33
38
|
|
34
|
-
def ==(other)
|
35
|
-
self.begin == other.begin &&
|
36
|
-
self.end == other.end &&
|
37
|
-
self.exclude_end? == other.exclude_end?
|
38
|
-
|
39
|
-
rescue NoMethodError
|
40
|
-
false
|
41
|
-
end
|
42
|
-
|
43
39
|
# Return new TimeInterval that is the concatenation of self and
|
44
40
|
# other (if possible).
|
45
41
|
#
|
data/lib/timerage/version.rb
CHANGED
@@ -33,6 +33,7 @@ describe Timerage::TimeInterval do
|
|
33
33
|
.to eq "#{interval.begin.iso8601}/#{interval.end.iso8601}" }
|
34
34
|
specify { expect(interval.iso8601(3))
|
35
35
|
.to eq "#{interval.begin.iso8601(3)}/#{interval.end.iso8601(3)}" }
|
36
|
+
specify { expect( interval.duration).to eq duration }
|
36
37
|
|
37
38
|
specify { expect(interval.cover? interval.begin+1..interval.end-1).to be_truthy }
|
38
39
|
specify { expect(interval.cover? interval.begin...interval.end).to be_truthy }
|
@@ -77,19 +78,6 @@ describe Timerage::TimeInterval do
|
|
77
78
|
specify { expect{ interval + nonadjacent_time_range }.to raise_error ArgumentError }
|
78
79
|
end
|
79
80
|
|
80
|
-
|
81
|
-
specify { expect(interval.cover? interval.begin+1..interval.end-1).to be_truthy }
|
82
|
-
specify { expect(interval.cover? interval.begin...interval.end).to be_truthy }
|
83
|
-
specify { expect(interval.cover? interval.begin-1..interval.end-1).to be_falsy }
|
84
|
-
specify { expect(interval.cover? interval.begin+1..interval.end+1).to be_falsy }
|
85
|
-
|
86
|
-
specify { expect(interval.overlap? interval.begin+1..interval.end-1).to be_truthy }
|
87
|
-
specify { expect(interval.overlap? interval.begin...interval.end).to be_truthy }
|
88
|
-
specify { expect(interval.overlap? interval.begin-1..interval.end-1).to be_truthy }
|
89
|
-
specify { expect(interval.overlap? interval.begin+1..interval.end+1).to be_truthy }
|
90
|
-
specify { expect(interval.overlap? interval.end+1..interval.end+2).to be_falsy }
|
91
|
-
specify { expect(interval.overlap? interval.begin-2..interval.begin-1).to be_falsy }
|
92
|
-
|
93
81
|
specify { expect(interval <=> (interval.begin-2..interval.begin-1)).to eq 1}
|
94
82
|
specify { expect(interval <=> (interval.end+1..interval.end+2)).to eq -1}
|
95
83
|
specify { expect(interval <=> interval).to eq 0}
|
@@ -103,15 +91,28 @@ describe Timerage::TimeInterval do
|
|
103
91
|
specify { expect(interval.cover? now - (duration + 1)).to be false }
|
104
92
|
specify { expect(interval.cover? interval.begin..interval.end).to be_truthy }
|
105
93
|
specify { expect(interval.cover? interval.begin...interval.end).to be_truthy}
|
94
|
+
specify { expect(interval.cover? interval.begin+1..interval.end-1).to be_truthy }
|
95
|
+
specify { expect(interval.cover? interval.begin-1..interval.end-1).to be_falsy }
|
96
|
+
specify { expect(interval.cover? interval.begin+1..interval.end+1).to be_falsy }
|
106
97
|
|
107
98
|
specify { expect(interval.overlap? interval.begin..interval.end).to be_truthy }
|
108
99
|
specify { expect(interval.overlap? interval.begin...interval.end).to be_truthy }
|
109
100
|
specify { expect(interval.overlap? interval.end-1..interval.end+1).to be_truthy }
|
110
101
|
specify { expect(interval.overlap? interval.end..interval.end+1).to be_truthy }
|
102
|
+
specify { expect(interval.overlap? interval.begin-2..interval.begin-1).to be_falsy }
|
103
|
+
specify { expect(interval.overlap? interval.end+1..interval.end+2).to be_falsy }
|
104
|
+
specify { expect(interval.overlap? interval.begin+1..interval.end-1).to be_truthy }
|
105
|
+
specify { expect(interval.overlap? interval.begin-1..interval.end-1).to be_truthy }
|
106
|
+
specify { expect(interval.overlap? interval.begin+1..interval.end+1).to be_truthy }
|
111
107
|
|
112
108
|
specify { expect{|b| interval.step(1200, &b) }
|
113
109
|
.to yield_successive_args now-duration, now-(duration-1200), now-(duration-2400), now }
|
114
110
|
|
111
|
+
specify { expect( interval.slice(duration/2) )
|
112
|
+
.to eq [now-duration...now-duration/2, now-duration/2...now, now..now] }
|
113
|
+
specify { expect( interval.slice(duration/2 + 1) )
|
114
|
+
.to eq [now-duration...((now-duration/2)+1), (now-duration/2)+1..now] }
|
115
|
+
|
115
116
|
context "duration of non-integer steps" do
|
116
117
|
specify { expect{|b| interval.step(1000, &b) }
|
117
118
|
.to yield_successive_args now-duration, now-(duration-1000), now-(duration-2000), now-(duration-3000) }
|
@@ -139,6 +140,11 @@ describe Timerage::TimeInterval do
|
|
139
140
|
specify { expect{|b| interval.step(1200, &b) }
|
140
141
|
.to yield_successive_args now-duration, now-(duration-1200), now-(duration-2400) }
|
141
142
|
|
143
|
+
specify { expect( interval.slice(duration/2) )
|
144
|
+
.to eq [now-duration...now-duration/2, now-duration/2...now] }
|
145
|
+
specify { expect( interval.slice((duration/2) + 1) )
|
146
|
+
.to eq [now-duration...((now-duration/2)+1), (now-duration/2)+1...now] }
|
147
|
+
specify { expect( interval.duration).to eq duration }
|
142
148
|
end
|
143
149
|
|
144
150
|
matcher :behave_like_a do |expected|
|