timeframe 0.0.5 → 0.0.6
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/VERSION +1 -1
- data/lib/timeframe.rb +9 -6
- data/spec/timeframe_spec.rb +8 -1
- data/timeframe.gemspec +1 -1
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
data/lib/timeframe.rb
CHANGED
@@ -247,8 +247,10 @@ class Timeframe
|
|
247
247
|
self.class.new((from - 1.year), (to - 1.year))
|
248
248
|
end
|
249
249
|
|
250
|
-
|
251
|
-
|
250
|
+
# Just a string that can be processed by Timeframe.interval... identical to #to_param
|
251
|
+
# accepts multiple arguments because of disagreements between active_support/json and json gem
|
252
|
+
def to_json(*)
|
253
|
+
to_param
|
252
254
|
end
|
253
255
|
|
254
256
|
# URL-friendly like "2008-10-25/2009-11-12"
|
@@ -293,11 +295,12 @@ class Timeframe
|
|
293
295
|
|
294
296
|
# Construct a new Timeframe by parsing an ISO 8601 time interval string
|
295
297
|
# http://en.wikipedia.org/wiki/ISO_8601#Time_intervals
|
296
|
-
def interval(
|
297
|
-
raise ArgumentError, 'Intervals should be specified as a string' unless
|
298
|
-
raise ArgumentError, 'Intervals should be specified according to ISO 8601, method 1, eliding times' unless
|
298
|
+
def interval(str)
|
299
|
+
raise ArgumentError, 'Intervals should be specified as a string' unless str.is_a? String
|
300
|
+
raise ArgumentError, 'Intervals should be specified according to ISO 8601, method 1, eliding times' unless str =~ /^\d\d\d\d-\d\d-\d\d\/\d\d\d\d-\d\d-\d\d$/
|
299
301
|
|
300
|
-
new(*
|
302
|
+
new(*str.split('/').map { |date| Date.parse date })
|
301
303
|
end
|
304
|
+
alias :from_json :interval
|
302
305
|
end
|
303
306
|
end
|
data/spec/timeframe_spec.rb
CHANGED
@@ -250,9 +250,16 @@ describe Timeframe do
|
|
250
250
|
end
|
251
251
|
end
|
252
252
|
|
253
|
+
describe 'Timeframe:class#from_json' do
|
254
|
+
it 'should understand its own #to_json' do
|
255
|
+
t = Timeframe.new(:year => 2009)
|
256
|
+
Timeframe.from_json(t.to_json).should == t
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
253
260
|
describe '#to_json' do
|
254
261
|
it 'should generate JSON' do
|
255
|
-
Timeframe.new(:year => 2009).to_json.should == "
|
262
|
+
Timeframe.new(:year => 2009).to_json.should == "2009-01-01/2010-01-01"
|
256
263
|
end
|
257
264
|
it 'should ignore any arguments you give it' do
|
258
265
|
example = Timeframe.new(:year => 2009).to_json
|
data/timeframe.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{timeframe}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Andy Rossmeissl", "Seamus Abshere", "Derek Kastner"]
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timeframe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Andy Rossmeissl
|