timespan 0.2.7 → 0.2.8
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/README.md +4 -0
- data/VERSION +1 -1
- data/lib/timespan.rb +8 -8
- data/spec/timespan_init_spec.rb +44 -0
- data/spec/timespan_spec.rb +1 -0
- data/timespan.gemspec +3 -2
- metadata +4 -3
data/README.md
CHANGED
@@ -18,6 +18,10 @@ Will calculate time diff between two dates, then allow you to get the time diffe
|
|
18
18
|
|
19
19
|
t = Timespan.new("3 hrs").from(2.days.from_now)
|
20
20
|
|
21
|
+
t = Timespan.new(:from => 2.days.ago)
|
22
|
+
|
23
|
+
t = Timespan.new(:end_date => 4.days.from_now)
|
24
|
+
|
21
25
|
t = Timespan.new(:from => Date.today, :to => "6 weeks from now")
|
22
26
|
|
23
27
|
t = Timespan.new(:from => Date.today, :duration => "7 weeks 3 days")
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.8
|
data/lib/timespan.rb
CHANGED
@@ -25,8 +25,8 @@ class Timespan
|
|
25
25
|
alias_method :start_date, :start_time
|
26
26
|
alias_method :end_date, :end_time
|
27
27
|
|
28
|
-
START_KEYS = [:start, :from]
|
29
|
-
END_KEYS = [:to, :end]
|
28
|
+
START_KEYS = [:start, :from, :start_date]
|
29
|
+
END_KEYS = [:to, :end, :end_date]
|
30
30
|
DURATION_KEYS = [:duration, :lasting]
|
31
31
|
|
32
32
|
ALL_KEYS = START_KEYS + END_KEYS + DURATION_KEYS
|
@@ -102,16 +102,15 @@ class Timespan
|
|
102
102
|
|
103
103
|
# uses init_options to configure
|
104
104
|
def configure! options = {}
|
105
|
-
from = options[first_from
|
106
|
-
to = options[first_from
|
107
|
-
dur = options[first_from
|
105
|
+
from = options[first_from(START_KEYS, options)]
|
106
|
+
to = options[first_from(END_KEYS, options)]
|
107
|
+
dur = options[first_from(DURATION_KEYS, options)]
|
108
108
|
|
109
109
|
self.duration = dur if dur
|
110
110
|
self.start_time = from if from
|
111
111
|
self.end_time = to if to
|
112
112
|
|
113
|
-
default_from_now!
|
114
|
-
|
113
|
+
default_from_now!
|
115
114
|
calculate_miss!
|
116
115
|
rescue ArgumentError => e
|
117
116
|
raise TimeParseError, e.message
|
@@ -121,7 +120,8 @@ class Timespan
|
|
121
120
|
end
|
122
121
|
|
123
122
|
def default_from_now!
|
124
|
-
self.start_time = Time.now
|
123
|
+
self.start_time = Time.now unless start_time || (end_time && duration)
|
124
|
+
self.end_time = Time.now unless end_time || (start_time && duration)
|
125
125
|
end
|
126
126
|
|
127
127
|
def validate!
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Timespan do
|
4
|
+
subject { timespan }
|
5
|
+
|
6
|
+
let(:from) { Chronic.parse("1 day ago") }
|
7
|
+
let(:to) { Time.now }
|
8
|
+
|
9
|
+
context 'End date only - use Today as from (start_date)' do
|
10
|
+
let(:timespan) { Timespan.new :to => 1.day.from_now}
|
11
|
+
|
12
|
+
describe '.start_date' do
|
13
|
+
it 'should default to today' do
|
14
|
+
DateTime.parse(subject.start_date.to_s).strftime('%d %b %Y').should == Date.today.strftime('%d %b %Y')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '.duration' do
|
19
|
+
specify { subject.duration.should_not be_nil }
|
20
|
+
|
21
|
+
it 'should be 1 day' do
|
22
|
+
subject.to_d.should == 1
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'Start date only - use Today as to (end_date)' do
|
28
|
+
let(:timespan) { Timespan.new :from => 1.day.ago}
|
29
|
+
|
30
|
+
describe '.end_date' do
|
31
|
+
it 'should default to today' do
|
32
|
+
DateTime.parse(subject.end_date.to_s).strftime('%d %b %Y').should == Date.today.strftime('%d %b %Y')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '.duration' do
|
37
|
+
specify { subject.duration.should_not be_nil }
|
38
|
+
|
39
|
+
it 'should be 1 day' do
|
40
|
+
subject.to_d.should == 1
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/spec/timespan_spec.rb
CHANGED
data/timespan.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "timespan"
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.8"
|
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"]
|
12
|
-
s.date = "2012-05-
|
12
|
+
s.date = "2012-05-29"
|
13
13
|
s.description = "Makes it easy to calculate time distance in different units"
|
14
14
|
s.email = "kmandrup@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -43,6 +43,7 @@ Gem::Specification.new do |s|
|
|
43
43
|
"spec/timespan/printer_spec.rb",
|
44
44
|
"spec/timespan/span_spec.rb",
|
45
45
|
"spec/timespan/units_spec.rb",
|
46
|
+
"spec/timespan_init_spec.rb",
|
46
47
|
"spec/timespan_spec.rb",
|
47
48
|
"timespan.gemspec"
|
48
49
|
]
|
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
|
+
version: 0.2.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: chronic
|
@@ -237,6 +237,7 @@ files:
|
|
237
237
|
- spec/timespan/printer_spec.rb
|
238
238
|
- spec/timespan/span_spec.rb
|
239
239
|
- spec/timespan/units_spec.rb
|
240
|
+
- spec/timespan_init_spec.rb
|
240
241
|
- spec/timespan_spec.rb
|
241
242
|
- timespan.gemspec
|
242
243
|
homepage: http://github.com/kristianmandrup/timespan
|
@@ -254,7 +255,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
254
255
|
version: '0'
|
255
256
|
segments:
|
256
257
|
- 0
|
257
|
-
hash:
|
258
|
+
hash: 43834805566888461
|
258
259
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
259
260
|
none: false
|
260
261
|
requirements:
|