date_ranger 0.0.1 → 0.0.2
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.
- data/lib/date_ranger/bootstrapper.rb +5 -1
- data/lib/date_ranger/version.rb +1 -1
- data/lib/date_ranger.rb +24 -17
- data/spec/date_ranger_spec.rb +30 -1
- metadata +11 -11
@@ -4,7 +4,11 @@ module DateRanger::Bootstrapper
|
|
4
4
|
cattr_accessor :date_ranger_options
|
5
5
|
self.date_ranger_options = options
|
6
6
|
self.date_ranger_options[:timestep] ||= :daily
|
7
|
-
self.
|
7
|
+
if self.date_ranger_options[:class]
|
8
|
+
extend DateRanger
|
9
|
+
else
|
10
|
+
self.send :include, DateRanger
|
11
|
+
end
|
8
12
|
end
|
9
13
|
|
10
14
|
end
|
data/lib/date_ranger/version.rb
CHANGED
data/lib/date_ranger.rb
CHANGED
@@ -1,31 +1,38 @@
|
|
1
1
|
module DateRanger
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
attr_writer :start_date, :end_date
|
4
|
+
|
5
|
+
def date_ranger_options
|
6
|
+
if self.class.respond_to?(:date_ranger_options)
|
7
|
+
self.class.date_ranger_options
|
8
|
+
else
|
9
|
+
super
|
8
10
|
end
|
9
11
|
end
|
10
12
|
|
11
|
-
def start_date
|
12
|
-
@start_date
|
13
|
+
def start_date
|
14
|
+
@start_date ||= self.date_ranger_options[:default_start_date].call
|
15
|
+
@start_date = case self.date_ranger_options[:timestep]
|
16
|
+
when :daily; @start_date
|
17
|
+
when :monthly; @start_date.beginning_of_month
|
18
|
+
end
|
19
|
+
@start_date = if @start_date.respond_to?(:to_date)
|
20
|
+
@start_date.to_date
|
21
|
+
else
|
22
|
+
@start_date
|
23
|
+
end
|
13
24
|
end
|
14
25
|
|
15
26
|
def end_date
|
16
|
-
@end_date ||= self.
|
17
|
-
case self.
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
def end_date=(date)
|
24
|
-
@end_date = date.respond_to?(:to_date) ? date.to_date : date
|
27
|
+
@end_date ||= self.date_ranger_options[:default_end_date].call
|
28
|
+
@end_date = case self.date_ranger_options[:timestep]
|
29
|
+
when :daily; @end_date
|
30
|
+
when :monthly; @end_date.end_of_month
|
31
|
+
end
|
32
|
+
@end_date = @end_date.respond_to?(:to_date) ? @end_date.to_date : @end_date
|
25
33
|
end
|
26
34
|
|
27
35
|
end
|
28
36
|
|
29
37
|
require "active_support/all"
|
30
|
-
require "date_ranger/version"
|
31
38
|
require 'date_ranger/bootstrapper'
|
data/spec/date_ranger_spec.rb
CHANGED
@@ -5,11 +5,26 @@ describe DateRanger do
|
|
5
5
|
class Something
|
6
6
|
end
|
7
7
|
|
8
|
+
class Another
|
9
|
+
end
|
10
|
+
|
8
11
|
describe '.has_date_range' do
|
9
12
|
it 'should default timestep to :daily' do
|
10
13
|
Something.has_date_range
|
11
14
|
Something.date_ranger_options[:timestep].should == :daily
|
12
15
|
end
|
16
|
+
|
17
|
+
context 'when applied to a class' do
|
18
|
+
it "should not overwrite another class' settings" do
|
19
|
+
Something.has_date_range :timestep => :daily, :class => true
|
20
|
+
Another.has_date_range :timestep => :monthly, :class => true
|
21
|
+
Something.date_ranger_options[:timestep].should == :daily
|
22
|
+
Another.date_ranger_options[:timestep].should == :monthly
|
23
|
+
|
24
|
+
Something.start_date = '2012-01-01'
|
25
|
+
Something.start_date.should == '2012-01-01'.to_date
|
26
|
+
end
|
27
|
+
end
|
13
28
|
end
|
14
29
|
|
15
30
|
describe "#start_date" do
|
@@ -20,9 +35,16 @@ describe DateRanger do
|
|
20
35
|
something.start_date.should == '2012-01-01'.to_date
|
21
36
|
end
|
22
37
|
|
38
|
+
it 'should return date given a time' do
|
39
|
+
Something.has_date_range
|
40
|
+
something = Something.new
|
41
|
+
something.start_date = 5.days.ago
|
42
|
+
something.start_date.should == 5.days.ago.to_date
|
43
|
+
end
|
44
|
+
|
23
45
|
context 'when not overriden' do
|
24
46
|
it 'should return the given default start date' do
|
25
|
-
Something.has_date_range :default_start_date => lambda { 2.days.ago
|
47
|
+
Something.has_date_range :default_start_date => lambda { 2.days.ago }
|
26
48
|
something = Something.new
|
27
49
|
something.start_date.should == 2.days.ago.to_date
|
28
50
|
end
|
@@ -55,6 +77,13 @@ describe DateRanger do
|
|
55
77
|
something.end_date.should == '2012-01-01'.to_date
|
56
78
|
end
|
57
79
|
|
80
|
+
it 'should return date given a time' do
|
81
|
+
Something.has_date_range
|
82
|
+
something = Something.new
|
83
|
+
something.end_date = 5.days.ago
|
84
|
+
something.end_date.should == 5.days.ago.to_date
|
85
|
+
end
|
86
|
+
|
58
87
|
context 'when not overriden' do
|
59
88
|
it 'should return the given default end date' do
|
60
89
|
Something.has_date_range :default_end_date => lambda { 2.days.ago.to_date }
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: date_ranger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Nestor Pestelos and Ramon Tayag
|
@@ -18,7 +18,9 @@ cert_chain: []
|
|
18
18
|
date: 2012-12-11 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
|
21
|
+
name: rspec
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
22
24
|
none: false
|
23
25
|
requirements:
|
24
26
|
- - ~>
|
@@ -29,12 +31,12 @@ dependencies:
|
|
29
31
|
- 12
|
30
32
|
- 0
|
31
33
|
version: 2.12.0
|
32
|
-
prerelease: false
|
33
34
|
type: :development
|
34
|
-
|
35
|
-
requirement: *id001
|
35
|
+
version_requirements: *id001
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
|
37
|
+
name: activesupport
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
40
|
none: false
|
39
41
|
requirements:
|
40
42
|
- - ~>
|
@@ -44,10 +46,8 @@ dependencies:
|
|
44
46
|
- 3
|
45
47
|
- 0
|
46
48
|
version: "3.0"
|
47
|
-
prerelease: false
|
48
49
|
type: :runtime
|
49
|
-
|
50
|
-
requirement: *id002
|
50
|
+
version_requirements: *id002
|
51
51
|
description: Provides date range methods
|
52
52
|
email:
|
53
53
|
- ngpestelos@gmail.com
|