timespan 0.2.0 → 0.2.1
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/Gemfile +2 -0
- data/Gemfile.lock +9 -0
- data/README.md +12 -2
- data/VERSION +1 -1
- data/lib/timespan/compare.rb +9 -1
- data/lib/timespan/mongoid.rb +8 -2
- data/lib/timespan/span.rb +2 -0
- data/spec/timespan/mongoid/account.rb +4 -0
- data/spec/timespan/mongoid/mongoid_timespan_spec.rb +20 -0
- data/spec/timespan/mongoid/spec_helper.rb +12 -0
- data/timespan.gemspec +10 -1
- metadata +37 -2
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -37,6 +37,7 @@ GEM
|
|
37
37
|
i18n (~> 0.6)
|
38
38
|
multi_json (~> 1.0)
|
39
39
|
arel (3.0.2)
|
40
|
+
bson (1.6.2)
|
40
41
|
builder (3.0.0)
|
41
42
|
chronic (0.6.7)
|
42
43
|
chronic_duration (0.9.6)
|
@@ -58,6 +59,12 @@ GEM
|
|
58
59
|
mime-types (~> 1.16)
|
59
60
|
treetop (~> 1.4.8)
|
60
61
|
mime-types (1.18)
|
62
|
+
mongo (1.6.2)
|
63
|
+
bson (~> 1.6.2)
|
64
|
+
mongoid (2.4.9)
|
65
|
+
activemodel (~> 3.1)
|
66
|
+
mongo (~> 1.3)
|
67
|
+
tzinfo (~> 0.3.22)
|
61
68
|
multi_json (1.3.2)
|
62
69
|
numerizer (0.1.1)
|
63
70
|
polyglot (0.3.3)
|
@@ -114,10 +121,12 @@ PLATFORMS
|
|
114
121
|
ruby
|
115
122
|
|
116
123
|
DEPENDENCIES
|
124
|
+
bson (~> 1.6)
|
117
125
|
bundler (>= 1.0.0)
|
118
126
|
chronic
|
119
127
|
chronic_duration
|
120
128
|
jeweler (>= 1.8.3)
|
129
|
+
mongoid (~> 2.4)
|
121
130
|
rails (~> 3.2)
|
122
131
|
rdoc (>= 3.12)
|
123
132
|
rspec (>= 2.8.0)
|
data/README.md
CHANGED
@@ -90,12 +90,22 @@ Custom Timespan datatype
|
|
90
90
|
```ruby
|
91
91
|
require 'timespan/mongoid'
|
92
92
|
|
93
|
-
class
|
93
|
+
class Account
|
94
94
|
include Mongoid::Document
|
95
|
-
field :period, type =>
|
95
|
+
field :period, :type => TimeSpan
|
96
96
|
end
|
97
97
|
```
|
98
98
|
|
99
|
+
Usage example:
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
account = Account.create :period => {:duration => '2 days', :from => Date.today }
|
103
|
+
|
104
|
+
account.period.start_date
|
105
|
+
account.period.end_date
|
106
|
+
account.period.days
|
107
|
+
account.period.duration # => Duration
|
108
|
+
|
99
109
|
## Chronic duration
|
100
110
|
|
101
111
|
Is used to parse duration strings if Spanner can't be handle it
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/lib/timespan/compare.rb
CHANGED
@@ -19,7 +19,6 @@ class Timespan
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module Compare
|
22
|
-
|
23
22
|
include Comparable
|
24
23
|
|
25
24
|
def time_left time = nil
|
@@ -48,6 +47,15 @@ class Timespan
|
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
50
|
+
def +(other)
|
51
|
+
self.duration += Duration.new(other)
|
52
|
+
end
|
53
|
+
|
54
|
+
def -(other)
|
55
|
+
self.duration -= Duration.new(other)
|
56
|
+
end
|
57
|
+
|
58
|
+
|
51
59
|
def valid_compare? time
|
52
60
|
valid_compare_types.any? {|type| time.kind_of? type }
|
53
61
|
end
|
data/lib/timespan/mongoid.rb
CHANGED
@@ -7,6 +7,10 @@ module Mongoid
|
|
7
7
|
class Timespan
|
8
8
|
include Mongoid::Fields::Serializable
|
9
9
|
|
10
|
+
def self.instantiate(name, options = {})
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
10
14
|
# Deserialize a Timespan given the hash stored by Mongodb
|
11
15
|
#
|
12
16
|
# @param [Hash] Timespan as hash
|
@@ -24,8 +28,10 @@ module Mongoid
|
|
24
28
|
def serialize(value)
|
25
29
|
return if value.blank?
|
26
30
|
timespan = ::Timespan.new(value)
|
27
|
-
{:from =>
|
31
|
+
{:from => timespan.start_time, :to => timespan.end_time, :duration => timespan.duration.total}
|
28
32
|
end
|
29
33
|
end
|
30
34
|
end
|
31
|
-
end
|
35
|
+
end
|
36
|
+
|
37
|
+
TimeSpan = Mongoid::Fields::Timespan
|
data/lib/timespan/span.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'timespan/mongoid/spec_helper'
|
2
|
+
|
3
|
+
describe Timespan do
|
4
|
+
subject { account }
|
5
|
+
|
6
|
+
let(:from) { Chronic.parse("1 day ago") }
|
7
|
+
let(:to) { Time.now }
|
8
|
+
|
9
|
+
context '2 days duration (from now - default)' do
|
10
|
+
let(:account) do
|
11
|
+
Account.create :period => {:duration => '2 days', :from => Date.today }
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '.start_date' do
|
15
|
+
it 'should default to today' do
|
16
|
+
DateTime.parse(subject.period.start_date.to_s).strftime('%d %b %Y').should == Date.today.strftime('%d %b %Y')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'mongoid'
|
3
|
+
require 'bson'
|
4
|
+
|
5
|
+
Mongoid.configure.master = Mongo::Connection.new.db('timespan')
|
6
|
+
|
7
|
+
Mongoid.database.collections.each do |coll|
|
8
|
+
coll.remove
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'timespan/mongoid'
|
12
|
+
require 'timespan/mongoid/account'
|
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.
|
8
|
+
s.version = "0.2.1"
|
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"]
|
@@ -36,6 +36,9 @@ Gem::Specification.new do |s|
|
|
36
36
|
"spec/spec_helper.rb",
|
37
37
|
"spec/timespan/compare_spec.rb",
|
38
38
|
"spec/timespan/locales/duration_da.yml",
|
39
|
+
"spec/timespan/mongoid/account.rb",
|
40
|
+
"spec/timespan/mongoid/mongoid_timespan_spec.rb",
|
41
|
+
"spec/timespan/mongoid/spec_helper.rb",
|
39
42
|
"spec/timespan/printer_spec.rb",
|
40
43
|
"spec/timespan/span_spec.rb",
|
41
44
|
"spec/timespan/units_spec.rb",
|
@@ -58,6 +61,8 @@ Gem::Specification.new do |s|
|
|
58
61
|
s.add_runtime_dependency(%q<ruby-duration>, [">= 0"])
|
59
62
|
s.add_development_dependency(%q<rspec>, [">= 2.8.0"])
|
60
63
|
s.add_development_dependency(%q<rails>, ["~> 3.2"])
|
64
|
+
s.add_development_dependency(%q<mongoid>, ["~> 2.4"])
|
65
|
+
s.add_development_dependency(%q<bson>, ["~> 1.6"])
|
61
66
|
s.add_development_dependency(%q<rdoc>, [">= 3.12"])
|
62
67
|
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
63
68
|
s.add_development_dependency(%q<jeweler>, [">= 1.8.3"])
|
@@ -69,6 +74,8 @@ Gem::Specification.new do |s|
|
|
69
74
|
s.add_dependency(%q<ruby-duration>, [">= 0"])
|
70
75
|
s.add_dependency(%q<rspec>, [">= 2.8.0"])
|
71
76
|
s.add_dependency(%q<rails>, ["~> 3.2"])
|
77
|
+
s.add_dependency(%q<mongoid>, ["~> 2.4"])
|
78
|
+
s.add_dependency(%q<bson>, ["~> 1.6"])
|
72
79
|
s.add_dependency(%q<rdoc>, [">= 3.12"])
|
73
80
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
74
81
|
s.add_dependency(%q<jeweler>, [">= 1.8.3"])
|
@@ -81,6 +88,8 @@ Gem::Specification.new do |s|
|
|
81
88
|
s.add_dependency(%q<ruby-duration>, [">= 0"])
|
82
89
|
s.add_dependency(%q<rspec>, [">= 2.8.0"])
|
83
90
|
s.add_dependency(%q<rails>, ["~> 3.2"])
|
91
|
+
s.add_dependency(%q<mongoid>, ["~> 2.4"])
|
92
|
+
s.add_dependency(%q<bson>, ["~> 1.6"])
|
84
93
|
s.add_dependency(%q<rdoc>, [">= 3.12"])
|
85
94
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
86
95
|
s.add_dependency(%q<jeweler>, [">= 1.8.3"])
|
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.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -107,6 +107,38 @@ dependencies:
|
|
107
107
|
- - ~>
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '3.2'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: mongoid
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '2.4'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '2.4'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: bson
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '1.6'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '1.6'
|
110
142
|
- !ruby/object:Gem::Dependency
|
111
143
|
name: rdoc
|
112
144
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,6 +230,9 @@ files:
|
|
198
230
|
- spec/spec_helper.rb
|
199
231
|
- spec/timespan/compare_spec.rb
|
200
232
|
- spec/timespan/locales/duration_da.yml
|
233
|
+
- spec/timespan/mongoid/account.rb
|
234
|
+
- spec/timespan/mongoid/mongoid_timespan_spec.rb
|
235
|
+
- spec/timespan/mongoid/spec_helper.rb
|
201
236
|
- spec/timespan/printer_spec.rb
|
202
237
|
- spec/timespan/span_spec.rb
|
203
238
|
- spec/timespan/units_spec.rb
|
@@ -218,7 +253,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
218
253
|
version: '0'
|
219
254
|
segments:
|
220
255
|
- 0
|
221
|
-
hash:
|
256
|
+
hash: -3275887994789672968
|
222
257
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
258
|
none: false
|
224
259
|
requirements:
|