timerage 2.1.0 → 2.2.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 +5 -5
- data/lib/timerage/time_interval.rb +5 -6
- data/lib/timerage/version.rb +1 -1
- data/spec/timerage/time_interval_spec.rb +23 -1
- data/timerage.gemspec +1 -1
- metadata +8 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: '07846226e71bd754087bd3b54c49d85a70e9d2f9b809d678351fbd685546fcb4'
|
|
4
|
+
data.tar.gz: e3be843301a7d7a7ea7cec902c2f4fd8152314a5cbbf4e74d8aad65ede5196ec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 76acc33ddaa358897021f20b82c4f3faffb1867469e410da6566480880c78c9524a84e39edb6c3468bfd5d49cba4d72dfe526dbd749ad6ecff66be839fcb6bc0
|
|
7
|
+
data.tar.gz: 96e281a1b857a002653629b4289574f4488068609f40f74b85832966a402311c88ea16f9db91080a74566ac502a7bd1468d496bb73b5095dcfbe572d09f2ec06
|
|
@@ -6,7 +6,7 @@ module Timerage
|
|
|
6
6
|
|
|
7
7
|
class << self
|
|
8
8
|
def new(*args)
|
|
9
|
-
args = [args.first.begin, args.first.end, args.first.exclude_end?] if args.first.respond_to?(:exclude_end?)
|
|
9
|
+
args = [args.first.begin, args.first.end, args.first.exclude_end?] if args.first.respond_to?(:exclude_end?)
|
|
10
10
|
new_obj = allocate
|
|
11
11
|
new_obj.send(:initialize, *args)
|
|
12
12
|
new_obj
|
|
@@ -135,13 +135,12 @@ module Timerage
|
|
|
135
135
|
end
|
|
136
136
|
|
|
137
137
|
def time_enumerator(step)
|
|
138
|
-
|
|
139
|
-
count -= 1 if exclude_end? and (self.end - self.begin) % step == 0
|
|
140
|
-
# We've included our end if it should be
|
|
138
|
+
next_offset = step * 0
|
|
141
139
|
|
|
142
140
|
Enumerator.new do |y|
|
|
143
|
-
(
|
|
144
|
-
y << self.begin +
|
|
141
|
+
while self.cover?(self.begin + next_offset)
|
|
142
|
+
y << self.begin + next_offset
|
|
143
|
+
next_offset += step
|
|
145
144
|
end
|
|
146
145
|
end
|
|
147
146
|
end
|
data/lib/timerage/version.rb
CHANGED
|
@@ -47,7 +47,13 @@ describe Timerage::TimeInterval do
|
|
|
47
47
|
specify { expect(interval.to_time).to (be >= interval.begin)
|
|
48
48
|
.and (be <= interval.end) }
|
|
49
49
|
specify { expect{|b| interval.step(1200, &b) }
|
|
50
|
-
|
|
50
|
+
.to yield_control.at_least(:once) }
|
|
51
|
+
|
|
52
|
+
specify { expect{|b|
|
|
53
|
+
Timerage(Time.parse("2019-08-01 01:00:00 UTC")...Time.parse("2019-09-01 01:00:00 UTC"))
|
|
54
|
+
.step(1.month, &b)
|
|
55
|
+
}.to yield_control.exactly(:once) }
|
|
56
|
+
|
|
51
57
|
specify { expect(interval.iso8601)
|
|
52
58
|
.to eq "#{interval.begin.iso8601}/#{interval.end.iso8601}" }
|
|
53
59
|
specify { expect(interval.iso8601(3))
|
|
@@ -208,6 +214,22 @@ describe Timerage::TimeInterval do
|
|
|
208
214
|
specify { expect{ |b| subject.step(3_600, &b) }.to yield_control.exactly(2).times }
|
|
209
215
|
end
|
|
210
216
|
|
|
217
|
+
context "When given date range" do
|
|
218
|
+
it "returns date objects when stepping through the range with a day duration" do
|
|
219
|
+
date_range = Date.new(2020, 1, 1)..Date.new(2020,1,3)
|
|
220
|
+
described_class.new(date_range).step(1.day) do |date|
|
|
221
|
+
expect(date).to be_kind_of Date
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
it "returns Time objects when stepping through the range with an hour duration" do
|
|
226
|
+
date_range = Date.new(2020, 1, 1)..Date.new(2020,1,2)
|
|
227
|
+
described_class.new(date_range).step(6.hours) do |date|
|
|
228
|
+
expect(date).to be_kind_of Time
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
|
|
211
233
|
let(:leap_day) { Time.parse("2016-02-29 12:00:00 UTC") }
|
|
212
234
|
let(:before_leap_day) { leap_day - 1.day }
|
|
213
235
|
let(:after_leap_day) { leap_day + 1.day}
|
data/timerage.gemspec
CHANGED
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
19
|
spec.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
-
spec.add_development_dependency "bundler", "~>
|
|
21
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
|
22
22
|
spec.add_development_dependency "rake"
|
|
23
23
|
spec.add_development_dependency "rspec", ["> 3.0.0.a", "< 4"]
|
|
24
24
|
spec.add_development_dependency "activesupport"
|
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: timerage
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter Williams
|
|
8
8
|
- Chris Schneider
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2023-11-10 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
@@ -17,14 +17,14 @@ dependencies:
|
|
|
17
17
|
requirements:
|
|
18
18
|
- - "~>"
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: '
|
|
20
|
+
version: '2.0'
|
|
21
21
|
type: :development
|
|
22
22
|
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
25
|
- - "~>"
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
|
-
version: '
|
|
27
|
+
version: '2.0'
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
29
|
name: rake
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -96,7 +96,7 @@ homepage: ''
|
|
|
96
96
|
licenses:
|
|
97
97
|
- MIT
|
|
98
98
|
metadata: {}
|
|
99
|
-
post_install_message:
|
|
99
|
+
post_install_message:
|
|
100
100
|
rdoc_options: []
|
|
101
101
|
require_paths:
|
|
102
102
|
- lib
|
|
@@ -111,9 +111,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
111
111
|
- !ruby/object:Gem::Version
|
|
112
112
|
version: '0'
|
|
113
113
|
requirements: []
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
signing_key:
|
|
114
|
+
rubygems_version: 3.2.33
|
|
115
|
+
signing_key:
|
|
117
116
|
specification_version: 4
|
|
118
117
|
summary: Simple refinement to Range to allow Time or Date as arguments
|
|
119
118
|
test_files:
|