timerage 1.6.0 → 1.7.0

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: 0ae2f36b387f927aad57a86abc300ed3465782a0
4
- data.tar.gz: 8aa0c202c8cf41e5c1be6650c476a3b32a05a7f0
3
+ metadata.gz: 40613d0f6bc616f4623f8978981997ca2d67ffeb
4
+ data.tar.gz: 287598ce1d9d8cb045f57a5921cbdaa083186af9
5
5
  SHA512:
6
- metadata.gz: 9f1762d865597b9f4c3604e8135bb2abb3bf4ce7cf6f75c7a4c0cfb02052044046394e6afaf57b919cb5e6c39a16620627556b7065607685878f5ce7ac5a704e
7
- data.tar.gz: f144b3fbd7133e7194460e8a21a1bf1d4b47c9d3e3cbbecb4e376e556aa45c044fdb7b1164e14ebe6a52a21e242234345bcaff0e5607253a1354c7cf234bbe8a
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 = (self.end == t && !exclude_end?) || t+seconds > self.end
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
  #
@@ -1,3 +1,3 @@
1
1
  module Timerage
2
- VERSION = "1.6.0"
2
+ VERSION = "1.7.0"
3
3
  end
@@ -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|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timerage
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Williams