timespan 0.5.6.1 → 0.5.7
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/CHANGELOG.md +11 -0
- data/Gemfile +5 -3
- data/Gemfile.lock +7 -5
- data/README.md +11 -2
- data/VERSION +1 -1
- data/lib/timespan.rb +11 -2
- data/lib/timespan/compare.rb +2 -0
- data/lib/timespan/span.rb +2 -0
- data/timespan.gemspec +10 -7
- metadata +22 -6
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
## 0.5.6
|
2
|
+
|
3
|
+
* Initial support for `time-lord` gem.
|
4
|
+
* Use `xduration` 3.0.0 gem
|
5
|
+
|
6
|
+
## 0.5.5
|
7
|
+
|
8
|
+
* Better DurationRange specs
|
9
|
+
* DurationRange comparisons
|
10
|
+
* DurationRange Mongoid serialization works (and specs)
|
11
|
+
|
1
12
|
## 0.5.4
|
2
13
|
|
3
14
|
- Added subclasses LongDurationRange and ShortDurationRange for long and short durations.
|
data/Gemfile
CHANGED
@@ -1,14 +1,16 @@
|
|
1
|
-
source '
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
gem 'chronic'
|
4
4
|
gem 'chronic_duration'
|
5
5
|
gem 'activesupport', '>= 3.0.0'
|
6
6
|
gem 'spanner'
|
7
7
|
gem 'sugar-high', '>= 0.7.3' # for range intersect
|
8
|
-
|
8
|
+
|
9
|
+
gem 'xduration', '>= 3.0.0' # ruby-duration with extensions
|
10
|
+
gem 'time-lord', '>= 1.0.0'
|
9
11
|
|
10
12
|
group :test, :development do
|
11
|
-
gem "rspec", ">= 2.
|
13
|
+
gem "rspec", ">= 2.12.0"
|
12
14
|
gem 'rails', '>= 3.1'
|
13
15
|
# gem 'mongoid', '>= 2.4'
|
14
16
|
# gem 'bson', '>= 1.6'
|
data/Gemfile.lock
CHANGED
@@ -9,7 +9,7 @@ GIT
|
|
9
9
|
rdoc
|
10
10
|
|
11
11
|
GEM
|
12
|
-
remote:
|
12
|
+
remote: https://rubygems.org/
|
13
13
|
specs:
|
14
14
|
actionmailer (3.2.12)
|
15
15
|
actionpack (= 3.2.12)
|
@@ -113,13 +113,14 @@ GEM
|
|
113
113
|
sugar-high (0.7.3)
|
114
114
|
thor (0.17.0)
|
115
115
|
tilt (1.3.5)
|
116
|
+
time-lord (1.0.1)
|
116
117
|
treetop (1.4.12)
|
117
118
|
polyglot
|
118
119
|
polyglot (>= 0.3.1)
|
119
120
|
tzinfo (0.3.37)
|
120
|
-
xduration (
|
121
|
+
xduration (3.0.0)
|
121
122
|
activesupport (>= 3.0.0)
|
122
|
-
i18n
|
123
|
+
i18n (>= 0.6)
|
123
124
|
|
124
125
|
PLATFORMS
|
125
126
|
ruby
|
@@ -133,8 +134,9 @@ DEPENDENCIES
|
|
133
134
|
mongoid (>= 3.0)
|
134
135
|
origin-selectable_ext (~> 0.1.1)
|
135
136
|
rails (>= 3.1)
|
136
|
-
rspec (>= 2.
|
137
|
+
rspec (>= 2.12.0)
|
137
138
|
simplecov (>= 0.7)
|
138
139
|
spanner
|
139
140
|
sugar-high (>= 0.7.3)
|
140
|
-
|
141
|
+
time-lord (>= 1.0.0)
|
142
|
+
xduration (>= 3.0.0)
|
data/README.md
CHANGED
@@ -51,7 +51,9 @@ Internally Timespan uses Spanner to parse duration strings.
|
|
51
51
|
|
52
52
|
`Spanner.parse('23 hours 12 minutes')
|
53
53
|
|
54
|
-
## Duration (
|
54
|
+
## Duration (xduration)
|
55
|
+
|
56
|
+
The type `Duration` is supported via the [xduration](https://github.com/kristianmandrup/xduration) gem, which extends `ruby-duration` with additional macros, specific time unit classes and supports longer duration time periods such as weeks, months and years.
|
55
57
|
|
56
58
|
```ruby
|
57
59
|
Duration.new(100) => #<Duration: minutes=1, seconds=40, total=100>
|
@@ -89,7 +91,7 @@ require 'duration/mongoid'
|
|
89
91
|
|
90
92
|
class MyModel
|
91
93
|
include Mongoid::Document
|
92
|
-
field :duration, type => Duration
|
94
|
+
field :duration, type => ::Duration
|
93
95
|
end
|
94
96
|
```
|
95
97
|
|
@@ -253,6 +255,13 @@ class Account
|
|
253
255
|
|
254
256
|
See the `mongoid_search_spec.rb` for examples:
|
255
257
|
|
258
|
+
## Time lord
|
259
|
+
|
260
|
+
This gem can be used in combination with [Time lord](https://github.com/krainboltgreene/time-lord), which has a lot of functionality for time periods, conversions, calculations and outputting to strings etc.
|
261
|
+
|
262
|
+
Some initial support for `time-lord` has been added, but not yet tested.
|
263
|
+
Please help out ;)
|
264
|
+
|
256
265
|
## Chronic duration
|
257
266
|
|
258
267
|
Is used to parse duration strings if Spanner can't be handle it
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.7
|
data/lib/timespan.rb
CHANGED
@@ -2,6 +2,7 @@ require 'duration'
|
|
2
2
|
require 'chronic'
|
3
3
|
require 'chronic_duration'
|
4
4
|
require 'spanner'
|
5
|
+
require 'time-lord'
|
5
6
|
|
6
7
|
# Range intersection that works with dates!
|
7
8
|
require 'sugar-high/range'
|
@@ -57,7 +58,7 @@ class Timespan
|
|
57
58
|
options = {:duration => options} if options.kind_of? Numeric
|
58
59
|
|
59
60
|
case options
|
60
|
-
when Duration, String
|
61
|
+
when TimeLord::Period, ::Duration, String
|
61
62
|
options = {:duration => options}
|
62
63
|
end
|
63
64
|
|
@@ -194,15 +195,23 @@ class Timespan
|
|
194
195
|
time.to_time
|
195
196
|
when Duration
|
196
197
|
(Time.now + time).to_time
|
198
|
+
when TimeLord::Period
|
199
|
+
(Time.now + time).to_time
|
200
|
+
when TimeLord::Time
|
201
|
+
(Time.now + time.moment).to_time
|
197
202
|
when Time
|
198
203
|
time
|
199
204
|
else
|
200
|
-
raise ArgumentError, "A valid time must be
|
205
|
+
raise ArgumentError, "A valid time must be one of #{valid_time_classes.inspect}, was: #{time.inspect} (#{time.class})"
|
201
206
|
end
|
202
207
|
end
|
203
208
|
|
204
209
|
protected
|
205
210
|
|
211
|
+
def valid_time_classes
|
212
|
+
[String, Duration, Date, Time, DateTime, TimeLord::Period, TimeLord::Time]
|
213
|
+
end
|
214
|
+
|
206
215
|
attr_reader :init_options
|
207
216
|
|
208
217
|
def first_from keys, options = {}
|
data/lib/timespan/compare.rb
CHANGED
data/lib/timespan/span.rb
CHANGED
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.5.
|
8
|
+
s.version = "0.5.7"
|
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"]
|
@@ -84,8 +84,9 @@ Gem::Specification.new do |s|
|
|
84
84
|
s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0"])
|
85
85
|
s.add_runtime_dependency(%q<spanner>, [">= 0"])
|
86
86
|
s.add_runtime_dependency(%q<sugar-high>, [">= 0.7.3"])
|
87
|
-
s.add_runtime_dependency(%q<xduration>, [">=
|
88
|
-
s.
|
87
|
+
s.add_runtime_dependency(%q<xduration>, [">= 3.0.0"])
|
88
|
+
s.add_runtime_dependency(%q<time-lord>, [">= 1.0.0"])
|
89
|
+
s.add_development_dependency(%q<rspec>, [">= 2.12.0"])
|
89
90
|
s.add_development_dependency(%q<rails>, [">= 3.1"])
|
90
91
|
s.add_development_dependency(%q<mongoid>, [">= 3.0"])
|
91
92
|
s.add_development_dependency(%q<origin-selectable_ext>, ["~> 0.1.1"])
|
@@ -98,8 +99,9 @@ Gem::Specification.new do |s|
|
|
98
99
|
s.add_dependency(%q<activesupport>, [">= 3.0.0"])
|
99
100
|
s.add_dependency(%q<spanner>, [">= 0"])
|
100
101
|
s.add_dependency(%q<sugar-high>, [">= 0.7.3"])
|
101
|
-
s.add_dependency(%q<xduration>, [">=
|
102
|
-
s.add_dependency(%q<
|
102
|
+
s.add_dependency(%q<xduration>, [">= 3.0.0"])
|
103
|
+
s.add_dependency(%q<time-lord>, [">= 1.0.0"])
|
104
|
+
s.add_dependency(%q<rspec>, [">= 2.12.0"])
|
103
105
|
s.add_dependency(%q<rails>, [">= 3.1"])
|
104
106
|
s.add_dependency(%q<mongoid>, [">= 3.0"])
|
105
107
|
s.add_dependency(%q<origin-selectable_ext>, ["~> 0.1.1"])
|
@@ -113,8 +115,9 @@ Gem::Specification.new do |s|
|
|
113
115
|
s.add_dependency(%q<activesupport>, [">= 3.0.0"])
|
114
116
|
s.add_dependency(%q<spanner>, [">= 0"])
|
115
117
|
s.add_dependency(%q<sugar-high>, [">= 0.7.3"])
|
116
|
-
s.add_dependency(%q<xduration>, [">=
|
117
|
-
s.add_dependency(%q<
|
118
|
+
s.add_dependency(%q<xduration>, [">= 3.0.0"])
|
119
|
+
s.add_dependency(%q<time-lord>, [">= 1.0.0"])
|
120
|
+
s.add_dependency(%q<rspec>, [">= 2.12.0"])
|
118
121
|
s.add_dependency(%q<rails>, [">= 3.1"])
|
119
122
|
s.add_dependency(%q<mongoid>, [">= 3.0"])
|
120
123
|
s.add_dependency(%q<origin-selectable_ext>, ["~> 0.1.1"])
|
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.5.
|
4
|
+
version: 0.5.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -98,7 +98,23 @@ dependencies:
|
|
98
98
|
requirements:
|
99
99
|
- - ! '>='
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
101
|
+
version: 3.0.0
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 3.0.0
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: time-lord
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.0.0
|
102
118
|
type: :runtime
|
103
119
|
prerelease: false
|
104
120
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -106,7 +122,7 @@ dependencies:
|
|
106
122
|
requirements:
|
107
123
|
- - ! '>='
|
108
124
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
125
|
+
version: 1.0.0
|
110
126
|
- !ruby/object:Gem::Dependency
|
111
127
|
name: rspec
|
112
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,7 +130,7 @@ dependencies:
|
|
114
130
|
requirements:
|
115
131
|
- - ! '>='
|
116
132
|
- !ruby/object:Gem::Version
|
117
|
-
version: 2.
|
133
|
+
version: 2.12.0
|
118
134
|
type: :development
|
119
135
|
prerelease: false
|
120
136
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -122,7 +138,7 @@ dependencies:
|
|
122
138
|
requirements:
|
123
139
|
- - ! '>='
|
124
140
|
- !ruby/object:Gem::Version
|
125
|
-
version: 2.
|
141
|
+
version: 2.12.0
|
126
142
|
- !ruby/object:Gem::Dependency
|
127
143
|
name: rails
|
128
144
|
requirement: !ruby/object:Gem::Requirement
|
@@ -293,7 +309,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
293
309
|
version: '0'
|
294
310
|
segments:
|
295
311
|
- 0
|
296
|
-
hash: -
|
312
|
+
hash: -400546450151555613
|
297
313
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
298
314
|
none: false
|
299
315
|
requirements:
|