timerage 1.7.0 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/timerage/time_interval.rb +18 -0
- data/lib/timerage/version.rb +1 -1
- data/spec/timerage/time_interval_spec.rb +14 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a516908d80d7444bc7558fe488fe546aba2d123f
|
4
|
+
data.tar.gz: d3ca42c6b1190a24c9030f6e91cebb5844447c05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aca0bf8520121da781d8e28a0f80974d619feba6f1e1a2f6b15055ff83e09489fc138a8dabfb47b594b43b738650294ed63ad089f9c2630e17a4467fc3c874d4
|
7
|
+
data.tar.gz: b73c86c3d951f1cd9571b63015647e67635d45a1cef8bec33d2794a213e08154765a0ea74575c7399a4e0dfd3522f5b0e651ef660b90624d0560233a25bfd6ba
|
@@ -101,6 +101,24 @@ module Timerage
|
|
101
101
|
false
|
102
102
|
end
|
103
103
|
|
104
|
+
# Returns a new TimeInterval that is the intersection of `self` and `other`.
|
105
|
+
def &(other)
|
106
|
+
fail ArgumentError, "#{other} does not overlap #{self}" unless self.overlap? other
|
107
|
+
|
108
|
+
new_begin = [self.begin, other.begin].max
|
109
|
+
new_end,ex_end = if self.end > other.end
|
110
|
+
[other.end, other.exclude_end?]
|
111
|
+
elsif self.end < other.end
|
112
|
+
[self.end, self.exclude_end?]
|
113
|
+
elsif self.exclude_end? || other.exclude_end?
|
114
|
+
[self.end, true]
|
115
|
+
else
|
116
|
+
[self.end, false]
|
117
|
+
end
|
118
|
+
|
119
|
+
self.class.new(new_begin, new_end, ex_end)
|
120
|
+
end
|
121
|
+
|
104
122
|
protected
|
105
123
|
|
106
124
|
def rangeish?(an_obj)
|
data/lib/timerage/version.rb
CHANGED
@@ -51,6 +51,20 @@ describe Timerage::TimeInterval do
|
|
51
51
|
specify { expect(interval <=> (interval.end+1..interval.end+2)).to eq -1}
|
52
52
|
specify { expect(interval <=> interval).to eq 0}
|
53
53
|
|
54
|
+
describe "#&" do
|
55
|
+
specify { expect( interval & interval ).to eq interval }
|
56
|
+
specify { expect( interval & (interval.begin-1..interval.end+1) ).to eq interval }
|
57
|
+
specify { expect( interval & (interval.begin+1..interval.end+1) )
|
58
|
+
.to eq interval.begin+1..interval.end }
|
59
|
+
specify { expect( interval & (interval.begin-1..interval.end-1) )
|
60
|
+
.to eq interval.begin..interval.end-1 }
|
61
|
+
specify { expect( interval & (interval.begin...interval.end) ).to eq interval.begin...interval.end }
|
62
|
+
specify { expect( interval & (interval.begin...interval.end-1) )
|
63
|
+
.to eq interval.begin...interval.end-1 }
|
64
|
+
specify { expect( described_class.new(interval.begin...interval.end-1) & interval )
|
65
|
+
.to eq described_class.new(interval.begin...interval.end-1) }
|
66
|
+
end
|
67
|
+
|
54
68
|
describe "==" do
|
55
69
|
specify { expect( described_class.new(interval) == interval ).to be true }
|
56
70
|
specify { expect( described_class.new(interval.begin, interval.end) == interval ).to be true }
|
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.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Williams
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-09-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
100
|
rubyforge_project:
|
101
|
-
rubygems_version: 2.
|
101
|
+
rubygems_version: 2.2.2
|
102
102
|
signing_key:
|
103
103
|
specification_version: 4
|
104
104
|
summary: Simple refinement to Range to allow Time or Date as arguments
|
@@ -106,3 +106,4 @@ test_files:
|
|
106
106
|
- spec/spec_helper.rb
|
107
107
|
- spec/timerage/time_interval_spec.rb
|
108
108
|
- spec/timerage_spec.rb
|
109
|
+
has_rdoc:
|