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 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