multiparameter_date_time 0.0.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/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in multiparameter_date_time.gemspec
4
+ gemspec
5
+
6
+ gem "rake"
7
+ gem "sqlite3", :platforms => :ruby
8
+ gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
9
+ gem "pry"
10
+
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Case Commons, LLC
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,61 @@
1
+ # MultiparameterDateTime
2
+
3
+ Set a DateTime via two accessors, one for the date, one for the time
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'multiparameter_date_time'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install multiparameter_date_time
18
+
19
+ ## Usage
20
+
21
+ ````ruby
22
+ class Article < ActiveRecord::Base
23
+ include MultiparameterDateTime
24
+
25
+ multiparameter_date_time :publish_at
26
+ end
27
+
28
+ record = Article.new(
29
+ :publish_at_date_part => "01/01/2001",
30
+ :publish_at_time_part => "4:30 pm"
31
+ )
32
+
33
+ record.publish_at #=> Mon, 01 Jan 2001 16:30:00 +0000
34
+
35
+ record.publish_at_date_part = "2/3/2004"
36
+ record.publish_at #=> Tue, 03 Feb 2004 16:30:00 +0000
37
+
38
+ record = Article.new(
39
+ :publish_at_date_part => "01/01/2001",
40
+ )
41
+
42
+ record.publish_at #=> :incomplete
43
+ record.publish_at_date_part #=> "01/01/2001"
44
+ record.publish_at_time_part #=> nil
45
+
46
+ record = Article.new(
47
+ :publish_at_time_part => "09:30 am",
48
+ )
49
+
50
+ record.publish_at #=> :incomplete
51
+ record.publish_at_date_part #=> nil
52
+ record.publish_at_time_part #=> "09:30 am"
53
+ ````
54
+
55
+ ## Contributing
56
+
57
+ 1. Fork it
58
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
59
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
60
+ 4. Push to the branch (`git push origin my-new-feature`)
61
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new('spec')
6
+
7
+ task :default => :spec
@@ -0,0 +1,3 @@
1
+ module MultiparameterDateTime
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,103 @@
1
+ require "active_support/concern"
2
+ require "american_date"
3
+
4
+ module MultiparameterDateTime
5
+ extend ActiveSupport::Concern
6
+
7
+ VALID_TIME_FORMAT = /\A\d?\d:\d{2}(:\d{2})?\s*([ap]m)?\s*([A-Z]{3,5})?\Z/
8
+ VALID_DATE_FORMAT = /\A\d?\d\/\d?\d\/\d{4}|(\d{4}-\d{2}-\d{2})\Z/
9
+
10
+ module ClassMethods
11
+ def multiparameter_date_time(attribute_name)
12
+ date_attribute = :"#{attribute_name}_date_part"
13
+ time_attribute = :"#{attribute_name}_time_part"
14
+
15
+ date_ivar_name = "@#{date_attribute}"
16
+ time_ivar_name = "@#{time_attribute}"
17
+
18
+ date_part_setter = :"#{date_attribute}="
19
+ time_part_setter = :"#{time_attribute}="
20
+
21
+ define_method "#{attribute_name}=" do |date_time_input|
22
+ date_time_input = date_time_input.to_time_in_current_zone if date_time_input.respond_to?(:to_time_in_current_zone)
23
+ if date_time_input.is_a?(String)
24
+ iso8601 = Time.iso8601(date_time_input).in_time_zone(Time.zone) rescue nil
25
+ if iso8601
26
+ write_attribute_for_multiparameter_date_time(attribute_name, iso8601)
27
+ else
28
+ date_part, time_part = date_time_input.split(" ", 2)
29
+ parsed_date_part = Date.parse(date_part) rescue nil
30
+ if time_part.nil? && parsed_date_part
31
+ write_attribute_for_multiparameter_date_time(
32
+ attribute_name,
33
+ parsed_date_part.to_time_in_current_zone)
34
+ else
35
+ public_send(date_part_setter, date_part)
36
+ public_send(time_part_setter, time_part)
37
+ end
38
+ end
39
+ else
40
+ write_attribute_for_multiparameter_date_time(attribute_name, date_time_input)
41
+ end
42
+ end
43
+
44
+ define_method date_part_setter do |date_string|
45
+ instance_variable_set(date_ivar_name, date_string)
46
+ time_string = send(time_attribute)
47
+ set_combined_datetime(attribute_name, date_string, time_string)
48
+ end
49
+
50
+ define_method time_part_setter do |time_string|
51
+ instance_variable_set(time_ivar_name, time_string)
52
+ date_string = send(date_attribute)
53
+ set_combined_datetime(attribute_name, date_string, time_string)
54
+ end
55
+
56
+ define_method time_attribute do
57
+ if instance_variable_defined?(time_ivar_name)
58
+ instance_variable_get(time_ivar_name)
59
+ else
60
+ time = public_send(attribute_name)
61
+ return nil if time.nil? || time == :incomplete
62
+
63
+ time.strftime("%-I:%M %P")
64
+ end
65
+ end
66
+
67
+ define_method date_attribute do
68
+ if instance_variable_defined?(date_ivar_name)
69
+ instance_variable_get(date_ivar_name)
70
+ else
71
+ date = public_send(attribute_name)
72
+ return nil if date.nil? || date == :incomplete
73
+ date.strftime("%-m/%-d/%Y")
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ private
80
+
81
+ def set_combined_datetime(name, date_string, time_string)
82
+ if date_string =~ MultiparameterDateTime::VALID_DATE_FORMAT && time_string =~ MultiparameterDateTime::VALID_TIME_FORMAT
83
+ begin
84
+ write_attribute_for_multiparameter_date_time(
85
+ name, Time.zone.parse("#{date_string} #{time_string}")
86
+ )
87
+ rescue ArgumentError
88
+ write_attribute_for_multiparameter_date_time(name, :incomplete)
89
+ end
90
+
91
+ elsif date_string.blank? && time_string.blank?
92
+ write_attribute_for_multiparameter_date_time(name, nil)
93
+ else
94
+ write_attribute_for_multiparameter_date_time(name, :incomplete)
95
+ end
96
+ end
97
+
98
+ def write_attribute_for_multiparameter_date_time(attribute_name, value)
99
+ write_attribute(attribute_name, value)
100
+ rescue NoMethodError
101
+ instance_variable_set("@#{attribute_name}", value)
102
+ end
103
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/multiparameter_date_time/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Case Commons, LLC", "Grant Hutchins", "Trace Wax"]
6
+ gem.email = ["casecommons-dev@googlegroups.com", "gems@nertzy.com", "gems@tracedwax.com"]
7
+ gem.summary = "Set a DateTime via two accessors, one for the date, one for the time"
8
+ gem.homepage = "https://github.com/Casecommons/multiparameter_date_time"
9
+
10
+ gem.files = `git ls-files`.split($\)
11
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
12
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
+ gem.name = "multiparameter_date_time"
14
+ gem.require_paths = ["lib"]
15
+ gem.version = MultiparameterDateTime::VERSION
16
+
17
+ gem.add_dependency "american_date"
18
+
19
+ gem.add_development_dependency 'activerecord'
20
+ gem.add_development_dependency 'activesupport'
21
+ gem.add_development_dependency 'rspec', '~> 2.11'
22
+ gem.add_development_dependency 'with_model', "~> 0.3"
23
+ gem.add_development_dependency 'informal', "~> 0.0.3"
24
+ end
@@ -0,0 +1,350 @@
1
+ require "spec_helper"
2
+
3
+ require "multiparameter_date_time"
4
+ require "informal"
5
+ require "active_support/core_ext/time/zones"
6
+
7
+ describe MultiparameterDateTime do
8
+ before do
9
+ Time.zone = "US/Eastern"
10
+ end
11
+
12
+ with_model :ModelWithDateTime do
13
+ table do |t|
14
+ t.datetime :foo
15
+ end
16
+
17
+ model do
18
+ include MultiparameterDateTime
19
+ multiparameter_date_time :foo
20
+ end
21
+ end
22
+
23
+ class ActiveModelWithDateTime
24
+ include Informal::Model
25
+ attr_accessor :foo
26
+ include MultiparameterDateTime
27
+ multiparameter_date_time :foo
28
+ end
29
+
30
+ %w[ModelWithDateTime ActiveModelWithDateTime].each do |model_name|
31
+ let(:parent_model) { model_name.constantize }
32
+ let(:subclass_model) { Class.new(parent_model) }
33
+
34
+ [false, true].each do |use_subclass|
35
+ let(:model) { use_subclass ? subclass_model : parent_model }
36
+
37
+ context "for #{"a subclass of " if use_subclass}#{model_name}" do
38
+ let(:record) do
39
+ model.new(foo_date_part: foo_date_part, foo_time_part: foo_time_part)
40
+ end
41
+
42
+ subject { record }
43
+
44
+ describe "when a value is present" do
45
+ let(:record) { model.new(foo: Time.zone.parse("1/2/2003 04:05pm")) }
46
+ its(:foo_date_part) { should == "1/2/2003" }
47
+ its(:foo_time_part) { should == "4:05 pm" }
48
+ end
49
+
50
+ describe "setting a valid date and time" do
51
+ let(:foo_date_part) { "01/02/2000" }
52
+ let(:foo_time_part) { "9:30 pm EST" }
53
+
54
+ it "doesn't raise an exception" do
55
+ expect { subject }.not_to raise_exception
56
+ end
57
+
58
+ it "sets the attribute to a DateTime object" do
59
+ subject.foo.should == Time.zone.parse("1/2/2000 9:30 pm")
60
+ end
61
+
62
+ it "has the original date input" do
63
+ subject.foo_date_part.should == "01/02/2000"
64
+ end
65
+
66
+ it "has the original time input" do
67
+ subject.foo_time_part.should == "9:30 pm EST"
68
+ end
69
+ end
70
+
71
+ describe "setting an invalid date" do
72
+ let(:foo_date_part) { "bad input" }
73
+ let(:foo_time_part) { "9:30 pm" }
74
+
75
+ it "doesn't raise an exception" do
76
+ expect { subject }.not_to raise_exception
77
+ end
78
+
79
+ it "sets the attribute to :incomplete" do
80
+ subject.foo.should == :incomplete
81
+ end
82
+
83
+ it "has the original date" do
84
+ subject.foo_date_part.should == "bad input"
85
+ end
86
+
87
+ it "has the original time input" do
88
+ subject.foo_time_part.should == "9:30 pm"
89
+ end
90
+ end
91
+
92
+ describe "setting a impossible date" do
93
+ let(:foo_date_part) { "99/99/9999" }
94
+ let(:foo_time_part) { "12:30 pm" }
95
+
96
+ it "doesn't raise an exception" do
97
+ expect { subject }.not_to raise_exception
98
+ end
99
+
100
+ it "sets the attribute to :incomplete" do
101
+ subject.foo.should == :incomplete
102
+ end
103
+
104
+ it "has the original date" do
105
+ subject.foo_date_part.should == "99/99/9999"
106
+ end
107
+
108
+ it "has the original time" do
109
+ subject.foo_time_part.should == "12:30 pm"
110
+ end
111
+ end
112
+
113
+ describe "setting an invalid time" do
114
+ let(:foo_date_part) { "01/02/2000" }
115
+ let(:foo_time_part) { "bad input" }
116
+
117
+ it "doesn't raise an exception" do
118
+ expect { subject }.not_to raise_exception
119
+ end
120
+
121
+ it "sets the attribute to :incomplete" do
122
+ subject.foo.should == :incomplete
123
+ end
124
+
125
+ it "has the original date input" do
126
+ subject.foo_date_part.should == "01/02/2000"
127
+ end
128
+
129
+ it "has the original time input" do
130
+ subject.foo_time_part.should == "bad input"
131
+ end
132
+ end
133
+
134
+ describe "setting a impossible time" do
135
+ let(:foo_date_part) { "01/02/2000" }
136
+ let(:foo_time_part) { "99:99pm" }
137
+
138
+ it "doesn't raise an exception" do
139
+ expect { subject }.not_to raise_exception
140
+ end
141
+
142
+ it "sets the attribute to :incomplete" do
143
+ subject.foo.should == :incomplete
144
+ end
145
+
146
+ it "has the original date input" do
147
+ subject.foo_date_part.should == "01/02/2000"
148
+ end
149
+
150
+ it "has the original time input" do
151
+ subject.foo_time_part.should == "99:99pm"
152
+ end
153
+ end
154
+
155
+ describe "setting a date but not a time" do
156
+ let(:record) { model.new(foo_date_part: "01/01/2000") }
157
+
158
+ it "doesn't raise an exception" do
159
+ expect { subject }.not_to raise_exception
160
+ end
161
+
162
+ it "sets the attribute to :incomplete" do
163
+ subject.foo.should == :incomplete
164
+ end
165
+
166
+ it "has the original date" do
167
+ subject.foo_date_part.should == "01/01/2000"
168
+ end
169
+
170
+ it "has the nil for the time input" do
171
+ subject.foo_time_part.should == nil
172
+ end
173
+ end
174
+
175
+ describe "setting a time but not a date" do
176
+ let(:record) { model.new(foo_time_part: "12:30 pm") }
177
+
178
+ it "doesn't raise an exception" do
179
+ expect { subject }.not_to raise_exception
180
+ end
181
+
182
+ it "sets the attribute to :incomplete" do
183
+ subject.foo.should == :incomplete
184
+ end
185
+
186
+ it "has the nil for the date input" do
187
+ subject.foo_date_part.should == nil
188
+ end
189
+
190
+ it "has the original time" do
191
+ subject.foo_time_part.should == "12:30 pm"
192
+ end
193
+ end
194
+
195
+ describe "setting incorrect time and date" do
196
+ let(:record) { model.new(foo_time_part: "qwer",
197
+ foo_date_part: "asdf") }
198
+
199
+ it "doesn't raise an exception" do
200
+ expect { subject }.not_to raise_exception
201
+ end
202
+
203
+ it "sets the attribute to :incomplete" do
204
+ subject.foo.should == :incomplete
205
+ end
206
+
207
+ it "has the original date" do
208
+ subject.foo_date_part.should == 'asdf'
209
+ end
210
+
211
+ it "has the original time input" do
212
+ subject.foo_time_part.should == "qwer"
213
+ end
214
+ end
215
+
216
+ describe "setting neither time nor a date" do
217
+ let(:record) { model.new(foo_time_part: "",
218
+ foo_date_part: "") }
219
+
220
+ it "doesn't raise an exception" do
221
+ expect { subject }.not_to raise_exception
222
+ end
223
+
224
+ it "has nil for the attribute" do
225
+ subject.foo.should == nil
226
+ end
227
+
228
+ it "has the original date" do
229
+ subject.foo_date_part.should == ""
230
+ end
231
+
232
+ it "has the original time input" do
233
+ subject.foo_time_part.should == ""
234
+ end
235
+ end
236
+
237
+ describe "setting a DateTime directly" do
238
+ let(:record) { model.new(foo: Time.zone.parse("#{foo_date_part} #{foo_time_part}")) }
239
+
240
+ let(:foo_date_part) { "01/02/2000" }
241
+ let(:foo_time_part) { "12:30 pm" }
242
+
243
+ it "doesn't raise an exception" do
244
+ expect { subject }.not_to raise_exception
245
+ end
246
+
247
+ it "sets the attribute to a DateTime object" do
248
+ subject.foo.should == Time.zone.parse("01/02/2000 12:30 pm")
249
+ end
250
+
251
+ it "has the original date" do
252
+ subject.foo_date_part.should == "1/2/2000"
253
+ end
254
+
255
+ it "has the original time input" do
256
+ subject.foo_time_part.should == "12:30 pm"
257
+ end
258
+ end
259
+
260
+ describe "setting a String directly" do
261
+ context "When the string contains a date and time" do
262
+ let(:record) { model.new(foo: "#{foo_date_part} #{foo_time_part}") }
263
+
264
+ let(:foo_date_part) { "01/01/2000" }
265
+ let(:foo_time_part) { "12:30 pm" }
266
+
267
+ it "doesn't raise an exception" do
268
+ expect { subject }.not_to raise_exception
269
+ end
270
+
271
+ it "sets the attribute to a DateTime object" do
272
+ subject.foo.should == Time.zone.parse("01/01/2000 12:30pm")
273
+ end
274
+
275
+ it "has the original date" do
276
+ subject.foo_date_part.should == "01/01/2000"
277
+ end
278
+
279
+ it "has the original time" do
280
+ subject.foo_time_part.should == "12:30 pm"
281
+ end
282
+ end
283
+
284
+ context "When the string contains an iso8601 datetime" do
285
+ let(:record) { model.new(foo: "2011-12-03T01:00:00Z") }
286
+ it "doesn't raise an exception" do
287
+ expect { subject }.not_to raise_exception
288
+ end
289
+
290
+ it "sets the attribute to a DateTime object with the correct EST time" do
291
+ subject.foo.should == Time.zone.parse("12/2/2011 8:00 pm")
292
+ end
293
+
294
+ it "has a date" do
295
+ subject.foo_date_part.should == "12/2/2011"
296
+ end
297
+
298
+ it "has a time" do
299
+ subject.foo_time_part.should == "8:00 pm"
300
+ end
301
+ end
302
+
303
+ context "When the string contains only a date" do
304
+ let(:record) { model.new(foo: "#{foo_date_part}") }
305
+
306
+ let(:foo_date_part) { "01/01/2000" }
307
+
308
+ it "doesn't raise an exception" do
309
+ expect { subject }.not_to raise_exception
310
+ end
311
+
312
+ it "sets the attribute to a DateTime object" do
313
+ subject.foo.should == Time.zone.parse("01/01/2000 12:00am")
314
+ end
315
+
316
+ it "has the original date" do
317
+ subject.foo_date_part.should == "1/1/2000"
318
+ end
319
+
320
+ it "has midnight for the time input" do
321
+ subject.foo_time_part.should == "12:00 am"
322
+ end
323
+ end
324
+ end
325
+
326
+ describe "setting a Date directly" do
327
+ let(:record) { model.new(foo: Date.parse(foo_date_part)) }
328
+
329
+ let(:foo_date_part) { "01/01/2000" }
330
+
331
+ it "doesn't raise an exception" do
332
+ expect { subject }.not_to raise_exception
333
+ end
334
+
335
+ it "sets the attribute to a DateTime object in the current time zone" do
336
+ subject.foo.should == Time.zone.parse("01/01/2000 12:00 am")
337
+ end
338
+
339
+ it "has the original date" do
340
+ subject.foo_date_part.should == "1/1/2000"
341
+ end
342
+
343
+ it "has midnight for the time input" do
344
+ subject.foo_time_part.should == "12:00 am"
345
+ end
346
+ end
347
+ end
348
+ end
349
+ end
350
+ end
@@ -0,0 +1,14 @@
1
+ require "active_record"
2
+ require "with_model"
3
+
4
+ RSpec.configure do |config|
5
+ config.extend WithModel
6
+ end
7
+
8
+ jruby = RUBY_PLATFORM =~ /\bjava\b/
9
+ adapter = jruby ? "jdbcsqlite3" : "sqlite3"
10
+
11
+ # MultiparameterDateTime requires ActiveRecord::Base.connection to be established.
12
+ # If ActiveRecord already has a connection, as in a Rails app, this is unnecessary.
13
+ ActiveRecord::Base.establish_connection(:adapter => adapter, :database => ":memory:")
14
+
metadata ADDED
@@ -0,0 +1,163 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: multiparameter_date_time
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Case Commons, LLC
9
+ - Grant Hutchins
10
+ - Trace Wax
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2012-08-09 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: american_date
18
+ requirement: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ! '>='
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: activerecord
34
+ requirement: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: activesupport
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ - !ruby/object:Gem::Dependency
65
+ name: rspec
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ~>
70
+ - !ruby/object:Gem::Version
71
+ version: '2.11'
72
+ type: :development
73
+ prerelease: false
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ version: '2.11'
80
+ - !ruby/object:Gem::Dependency
81
+ name: with_model
82
+ requirement: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: '0.3'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ~>
94
+ - !ruby/object:Gem::Version
95
+ version: '0.3'
96
+ - !ruby/object:Gem::Dependency
97
+ name: informal
98
+ requirement: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 0.0.3
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: 0.0.3
112
+ description:
113
+ email:
114
+ - casecommons-dev@googlegroups.com
115
+ - gems@nertzy.com
116
+ - gems@tracedwax.com
117
+ executables: []
118
+ extensions: []
119
+ extra_rdoc_files: []
120
+ files:
121
+ - .gitignore
122
+ - Gemfile
123
+ - LICENSE
124
+ - README.md
125
+ - Rakefile
126
+ - lib/multiparameter_date_time.rb
127
+ - lib/multiparameter_date_time/version.rb
128
+ - multiparameter_date_time.gemspec
129
+ - spec/multiparameter_date_time_spec.rb
130
+ - spec/spec_helper.rb
131
+ homepage: https://github.com/Casecommons/multiparameter_date_time
132
+ licenses: []
133
+ post_install_message:
134
+ rdoc_options: []
135
+ require_paths:
136
+ - lib
137
+ required_ruby_version: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ segments:
144
+ - 0
145
+ hash: -1009483105681798666
146
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ! '>='
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ segments:
153
+ - 0
154
+ hash: -1009483105681798666
155
+ requirements: []
156
+ rubyforge_project:
157
+ rubygems_version: 1.8.24
158
+ signing_key:
159
+ specification_version: 3
160
+ summary: Set a DateTime via two accessors, one for the date, one for the time
161
+ test_files:
162
+ - spec/multiparameter_date_time_spec.rb
163
+ - spec/spec_helper.rb