timespan 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.2.5
data/lib/timespan.rb CHANGED
@@ -34,12 +34,15 @@ class Timespan
34
34
  def initialize options = {}
35
35
  @is_new = true
36
36
 
37
+ @init_options = options
38
+ validate! if options == {}
39
+
37
40
  case options
38
41
  when Numeric, Duration, String
39
42
  options = {:duration => options}
40
43
  end
41
44
 
42
- configure options
45
+ configure! options
43
46
 
44
47
  @is_new = false
45
48
  end
@@ -89,11 +92,14 @@ class Timespan
89
92
 
90
93
  protected
91
94
 
95
+ attr_reader :init_options
96
+
92
97
  def first_from keys, options = {}
93
98
  keys.select {|key| options[key] }.first
94
99
  end
95
100
 
96
- def configure options = {}
101
+ # uses init_options to configure
102
+ def configure! options = {}
97
103
  from = options[first_from START_KEYS, options]
98
104
  to = options[first_from END_KEYS, options]
99
105
  dur = options[first_from DURATION_KEYS, options]
@@ -114,12 +120,12 @@ class Timespan
114
120
  self.start_time = Time.now
115
121
  end
116
122
 
117
- def validate!
118
- raise ArgumentError, "#{valid_requirement}, was: #{current_config}" unless valid?
123
+ def validate!
124
+ raise ArgumentError, "#{valid_requirement}, was: #{init_options.inspect} resulting in state: #{current_config}" unless valid?
119
125
  end
120
126
 
121
127
  def valid_requirement
122
- "Timespan must take a :start and :end time or any of :start and :end time and a :duration"
128
+ "Timespan must take 1-2 of :start_time, :end_time or :duration or simply a duration as number of seconds or a string"
123
129
  end
124
130
 
125
131
  def current_config
@@ -16,9 +16,12 @@ describe Timespan::Span do
16
16
  describe 'print in danish - multiple modes' do
17
17
  let(:timespan) { Timespan.new :from => from, :to => to }
18
18
 
19
- its(:to_s) { should == 'fra 03 May 2012 til 04 May 2012 der varer ialt 1 dag' }
19
+ let(:today) { Date.today.strftime('%d %b %Y') }
20
+ let(:yesterday) { 1.day.ago.strftime('%d %b %Y') }
20
21
 
21
- specify { subject.to_s(:dates).should == 'fra 03 May 2012 til 04 May 2012' }
22
+ its(:to_s) { should == "fra #{yesterday} til #{today} der varer ialt 1 dag" }
23
+
24
+ specify { subject.to_s(:dates).should == "fra #{yesterday} til #{today}" }
22
25
  specify { subject.to_s(:duration).should == '1 dag' }
23
26
  end
24
27
  end
@@ -6,6 +6,19 @@ describe Timespan do
6
6
  let(:from) { Chronic.parse("1 day ago") }
7
7
  let(:to) { Time.now }
8
8
 
9
+ context 'Invalid params' do
10
+ describe 'error msg' do
11
+ specify do
12
+ expect { Timespan.new }.to raise_error(ArgumentError)
13
+ end
14
+
15
+ specify do
16
+ expect { Timespan.new(nil) }.to raise_error(ArgumentError)
17
+ end
18
+ end
19
+ end
20
+
21
+
9
22
  context '2 days duration (from now - default)' do
10
23
  let(:timespan) { Timespan.new :duration => "2 days"}
11
24
 
data/timespan.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "timespan"
8
- s.version = "0.2.4"
8
+ s.version = "0.2.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kristian Mandrup"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timespan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -254,7 +254,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
254
254
  version: '0'
255
255
  segments:
256
256
  - 0
257
- hash: -1064045562578048664
257
+ hash: -867346219046105956
258
258
  required_rubygems_version: !ruby/object:Gem::Requirement
259
259
  none: false
260
260
  requirements: