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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 852f05909b0c54b53238eeccad669f7f71afcfd9
4
- data.tar.gz: 991234a087b2d382acb900a2869557f764e50d7a
2
+ SHA256:
3
+ metadata.gz: '07846226e71bd754087bd3b54c49d85a70e9d2f9b809d678351fbd685546fcb4'
4
+ data.tar.gz: e3be843301a7d7a7ea7cec902c2f4fd8152314a5cbbf4e74d8aad65ede5196ec
5
5
  SHA512:
6
- metadata.gz: e05d511d2ecec9629e85a8d3db2c5b7e251d084a289f159e1d07843098a398cf46f74cb197c23197c2a3b2748331586f678b1d7810c13aeb3fd5b33fabeea14c
7
- data.tar.gz: 8111ba63bf032f12969d21260ad89c9ce1d3ec94139863531ca0bc8811eb0d83c37d7ad8cef1e362edb6ef14253db702fe025cd950adba674c026b7d1d3349ef
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
- count = (self.end - self.begin).div(step) + 1
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
- (count).times do |offset|
144
- y << self.begin + (step * offset)
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
@@ -1,3 +1,3 @@
1
1
  module Timerage
2
- VERSION = "2.1.0"
2
+ VERSION = "2.2.0"
3
3
  end
@@ -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
- .to yield_control.at_least(:once) }
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", "~> 1.5"
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.1.0
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: 2016-02-02 00:00:00.000000000 Z
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: '1.5'
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: '1.5'
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
- rubyforge_project:
115
- rubygems_version: 2.4.5
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: