timerage 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: