timerage 1.3.0 → 1.4.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 +15 -0
- data/lib/timerage/version.rb +1 -1
- data/spec/timerage/time_interval_spec.rb +36 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9c4a01a7d8ba83c2829e4bec7eaf00e33ae4beb
|
4
|
+
data.tar.gz: b60764ca0beb7a138de33035b849cd2ac132adf2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9eac547686f938795999e6d02220917a4ac884a45f9a1c6bdef6473a8529a07ba65ead34bafd28cdd67bf6b081e3917f9f7b2e3ecc6ba17ee9f8390f1a9ff0e6
|
7
|
+
data.tar.gz: d4cb8f8dbd21380b4da2ce7d7ba9d8f8e426b8053101738b4f45c8d4b0936fe4be261e06a9fbc758ed119119e34d7d2927446c35649f32d777661fbd9a3ebdc1
|
@@ -23,12 +23,27 @@ module Timerage
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
+
# Return new TimeInterval that is the concatenation of self and
|
27
|
+
# other (if possible).
|
28
|
+
#
|
29
|
+
# Raises ArgumentError if other is not adjacent to self
|
30
|
+
# chronologically.
|
31
|
+
def +(other)
|
32
|
+
fail ArgumentError, "other must be adjacent to self" unless adjacent_to?(other)
|
33
|
+
|
34
|
+
self.class.new([self.begin, other.begin].min, [self.end, other.end].max)
|
35
|
+
end
|
36
|
+
|
26
37
|
# Returns an ISO8601 interval representation of self
|
27
38
|
# Takes same args as Time#iso8601
|
28
39
|
def iso8601(*args)
|
29
40
|
"#{self.begin.iso8601(*args)}/#{self.end.iso8601(*args)}"
|
30
41
|
end
|
31
42
|
|
43
|
+
def adjacent_to?(other)
|
44
|
+
other.begin == self.end || other.end == self.begin
|
45
|
+
end
|
46
|
+
|
32
47
|
protected
|
33
48
|
|
34
49
|
def rangeish?(an_obj)
|
data/lib/timerage/version.rb
CHANGED
@@ -34,7 +34,29 @@ describe Timerage::TimeInterval do
|
|
34
34
|
specify { expect(interval.iso8601(3))
|
35
35
|
.to eq "#{interval.begin.iso8601(3)}/#{interval.end.iso8601(3)}" }
|
36
36
|
|
37
|
-
|
37
|
+
describe "+" do
|
38
|
+
let(:adjacent_preceding_time_range) { interval.begin-42..interval.begin }
|
39
|
+
let(:adjacent_following_time_range) { interval.end..interval.end+42 }
|
40
|
+
let(:nonadjacent_time_range) { interval.end+1..interval.end+42 }
|
41
|
+
|
42
|
+
specify { expect( interval + adjacent_following_time_range )
|
43
|
+
.to be_kind_of described_class }
|
44
|
+
specify { expect( interval + adjacent_following_time_range )
|
45
|
+
.to end_at adjacent_following_time_range.end }
|
46
|
+
specify { expect( interval + adjacent_following_time_range )
|
47
|
+
.to begin_at interval.begin }
|
48
|
+
|
49
|
+
specify { expect( interval + adjacent_preceding_time_range )
|
50
|
+
.to be_kind_of described_class }
|
51
|
+
specify { expect( interval + adjacent_preceding_time_range )
|
52
|
+
.to end_at interval.end }
|
53
|
+
specify { expect( interval + adjacent_preceding_time_range )
|
54
|
+
.to begin_at adjacent_preceding_time_range.begin }
|
55
|
+
|
56
|
+
specify { expect{ interval + nonadjacent_time_range }.to raise_error ArgumentError }
|
57
|
+
end
|
58
|
+
|
59
|
+
context "inclusive end" do
|
38
60
|
specify { expect(interval.exclude_end?).to be false }
|
39
61
|
specify { expect(interval.cover? now).to be true }
|
40
62
|
specify { expect(interval.cover? now - duration).to be true }
|
@@ -51,7 +73,7 @@ describe Timerage::TimeInterval do
|
|
51
73
|
end
|
52
74
|
end
|
53
75
|
|
54
|
-
context "
|
76
|
+
context "exclusive end" do
|
55
77
|
subject(:interval) { described_class.new(now-duration...now) }
|
56
78
|
|
57
79
|
specify { expect(interval.exclude_end?).to be true }
|
@@ -71,4 +93,16 @@ describe Timerage::TimeInterval do
|
|
71
93
|
Set[*expected.instance_methods].subset? Set[*actual.methods]
|
72
94
|
end
|
73
95
|
end
|
96
|
+
|
97
|
+
matcher :begin_at do |expected|
|
98
|
+
match do |actual|
|
99
|
+
expect( actual.begin ).to eq expected
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
matcher :end_at do |expected|
|
104
|
+
match do |actual|
|
105
|
+
expect( actual.end ).to eq expected
|
106
|
+
end
|
107
|
+
end
|
74
108
|
end
|
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.4.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-04-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|