timerage 1.2.0 → 1.3.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 +17 -1
- data/lib/timerage/version.rb +1 -1
- data/lib/timerage.rb +13 -0
- data/spec/timerage/time_interval_spec.rb +8 -0
- data/spec/timerage_spec.rb +9 -1
- 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: 5d2ce967a8b55c69a7296b30f83b8e4cbf187926
|
4
|
+
data.tar.gz: fac80cd77fdacd79a53c76f54c7c15943da8b932
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4eafa5361792a724815d1c90a1c44f7f63b37bfe82ee08015310c98205bb87bbb6d5984802372b8c2adfedd3d5feafc711ea5a9f29437fc8fb4eed692540465
|
7
|
+
data.tar.gz: 9049a7ddff2190f712eadea970f727fa0d9ca9fcd4c1e04f65d37d7a82506e56b2b8ef97ee874c4b40e7961466062ab2c89ba27f94483df4e9d878a9107e43f0
|
@@ -23,7 +23,7 @@ module Timerage
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
# Returns
|
26
|
+
# Returns an ISO8601 interval representation of self
|
27
27
|
# Takes same args as Time#iso8601
|
28
28
|
def iso8601(*args)
|
29
29
|
"#{self.begin.iso8601(*args)}/#{self.end.iso8601(*args)}"
|
@@ -59,5 +59,21 @@ module Timerage
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
62
|
+
|
63
|
+
# class methods
|
64
|
+
# =============
|
65
|
+
|
66
|
+
# Returns a new TimeInterval representation of the iso8601 interval
|
67
|
+
# represented by the specified string.
|
68
|
+
#
|
69
|
+
# --
|
70
|
+
#
|
71
|
+
# Currently this only supports `<begin>/<end>` style time intervals.
|
72
|
+
def self.iso8601(str)
|
73
|
+
new *str.split("/").map{|s| Time.iso8601(s)}
|
74
|
+
|
75
|
+
rescue ArgumentError
|
76
|
+
raise ArgumentError, "Invalid iso8601 interval: #{str.inspect}"
|
77
|
+
end
|
62
78
|
end
|
63
79
|
end
|
data/lib/timerage/version.rb
CHANGED
data/lib/timerage.rb
CHANGED
@@ -1,8 +1,21 @@
|
|
1
1
|
require "timerage/version"
|
2
|
+
require "time"
|
2
3
|
|
3
4
|
module Timerage
|
4
5
|
autoload :TimeInterval, "timerage/time_interval"
|
5
6
|
|
7
|
+
# Returns a Time or Timerage::TimeInterval representation of the
|
8
|
+
# iso8601 str.
|
9
|
+
#
|
10
|
+
# --
|
11
|
+
#
|
12
|
+
# Currently this only supports `<begin>/<end>` style time intervals.
|
13
|
+
def self.parse_iso8601(str)
|
14
|
+
TimeInterval.iso8601(str)
|
15
|
+
rescue ArgumentError
|
16
|
+
Time.iso8601(str)
|
17
|
+
end
|
18
|
+
|
6
19
|
refine Range do
|
7
20
|
def step(n, &blk)
|
8
21
|
if self.begin.kind_of?(Time) || self.begin.kind_of?(Date)
|
@@ -11,6 +11,14 @@ describe Timerage::TimeInterval do
|
|
11
11
|
specify { expect(described_class.new(now-1, now, false )).to be_kind_of described_class }
|
12
12
|
end
|
13
13
|
|
14
|
+
describe ".iso8601" do
|
15
|
+
specify { expect(described_class
|
16
|
+
.iso8601("2001-01-01T00:00:00Z/2001-01-02T00:00:00-06:00"))
|
17
|
+
.to be_kind_of described_class }
|
18
|
+
specify { expect{described_class.iso8601("2001-01-01T00:00:00Z")}
|
19
|
+
.to raise_error ArgumentError }
|
20
|
+
end
|
21
|
+
|
14
22
|
subject(:interval) { described_class.new(now-duration, now) }
|
15
23
|
|
16
24
|
it { is_expected.to behave_like_a Range }
|
data/spec/timerage_spec.rb
CHANGED
@@ -9,11 +9,19 @@ describe Timerage do
|
|
9
9
|
specify { expect(range.to_time_interval).to be_kind_of Timerage::TimeInterval }
|
10
10
|
specify { expect{|b| range.step(1200, &b) }.to yield_control.at_least(:once) }
|
11
11
|
|
12
|
+
describe ".iso8601" do
|
13
|
+
specify { expect(described_class
|
14
|
+
.parse_iso8601("2001-01-01T00:00:00Z/2001-01-02T00:00:00-06:00"))
|
15
|
+
.to be_kind_of Timerage::TimeInterval }
|
16
|
+
specify { expect(described_class.parse_iso8601("2001-01-01T00:00:00Z"))
|
17
|
+
.to be_kind_of Time }
|
18
|
+
end
|
19
|
+
|
12
20
|
context "interval include end" do
|
13
21
|
specify { expect{|b| range.step(1200, &b) }
|
14
22
|
.to yield_successive_args now-duration, now-(duration-1200), now-(duration-2400), now }
|
15
23
|
|
16
|
-
|
24
|
+
end
|
17
25
|
|
18
26
|
context "interval exclude end" do
|
19
27
|
subject (:range) { Range.new(now-duration, now, 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.3.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-02-
|
12
|
+
date: 2015-02-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|