multiparameter_date_time 0.3.3 → 0.3.4
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.
- checksums.yaml +4 -4
- data/lib/multiparameter_date_time.rb +7 -1
- data/lib/multiparameter_date_time/version.rb +1 -1
- data/spec/multiparameter_date_time_spec.rb +45 -2
- metadata +17 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ddf8a324cd35af351af34df75e7a89f3c159554
|
4
|
+
data.tar.gz: a025da039da052889e1fd2627eaa3e94cce1341b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a2131a2c0a35f1c7eb7f1037134a714f58c21258eaae2259d603dfb2d765d74c813a69fbc35b11a806f428f46e97f07baf5a092fcbea31145f8d5f6add08592
|
7
|
+
data.tar.gz: ad58b2a5835233d8bf5256a64f8d4529f8ca248539c08eccf78c87213f4d34dbd4a2a480a539f10b084bea0950aeaa95a563816fce3653c508ba79e2d6969b81
|
@@ -14,6 +14,7 @@ module MultiparameterDateTime
|
|
14
14
|
DEFAULT_TIME_FORMAT = '%-I:%0M %P'
|
15
15
|
|
16
16
|
mattr_writer :date_format, :time_format
|
17
|
+
mattr_accessor :date_string_formatter
|
17
18
|
|
18
19
|
def self.date_format
|
19
20
|
@@date_format ||= DEFAULT_DATE_FORMAT
|
@@ -111,8 +112,13 @@ module MultiparameterDateTime
|
|
111
112
|
def set_combined_datetime(name, date_string, time_string)
|
112
113
|
if date_string =~ MultiparameterDateTime::VALID_DATE_FORMAT && (time_string =~ MultiparameterDateTime::VALID_STANDARD_TIME_FORMAT || time_string =~ VALID_MILITARY_TIME_FORMAT)
|
113
114
|
begin
|
115
|
+
formatted_date_string = date_string
|
116
|
+
if MultiparameterDateTime.date_string_formatter.present?
|
117
|
+
formatted_date_string = MultiparameterDateTime.date_string_formatter.format(date_string)
|
118
|
+
end
|
119
|
+
|
114
120
|
write_attribute_for_multiparameter_date_time(
|
115
|
-
name, Time.zone.parse("#{
|
121
|
+
name, Time.zone.parse("#{formatted_date_string} #{time_string}")
|
116
122
|
)
|
117
123
|
rescue ArgumentError
|
118
124
|
write_attribute_for_multiparameter_date_time(name, :incomplete)
|
@@ -42,8 +42,13 @@ describe MultiparameterDateTime do
|
|
42
42
|
|
43
43
|
describe "when a value is present" do
|
44
44
|
let(:record) { model.new(foo: Time.zone.parse('1/2/2003 04:05pm')) }
|
45
|
-
|
46
|
-
|
45
|
+
it 'assigns date_part' do
|
46
|
+
expect(subject.foo_date_part).to eq '1/2/2003'
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'assigns time_part' do
|
50
|
+
expect(subject.foo_time_part).to eq '4:05 pm'
|
51
|
+
end
|
47
52
|
end
|
48
53
|
|
49
54
|
describe "setting a valid date and time" do
|
@@ -390,6 +395,44 @@ describe MultiparameterDateTime do
|
|
390
395
|
end
|
391
396
|
end
|
392
397
|
end
|
398
|
+
|
399
|
+
describe 'using a custom date string formatter' do
|
400
|
+
let(:foo_date_part) { '1/12/15' }
|
401
|
+
let(:foo_time_part) { '9:30 pm EST' }
|
402
|
+
|
403
|
+
context 'when the date string formatter is nil' do
|
404
|
+
it 'parses the unmodified date string' do
|
405
|
+
MultiparameterDateTime.date_string_formatter = nil
|
406
|
+
expect(Time.zone).to receive(:parse)
|
407
|
+
.with("#{foo_date_part} #{foo_time_part}")
|
408
|
+
|
409
|
+
model.new(foo_date_part: foo_date_part, foo_time_part: foo_time_part)
|
410
|
+
end
|
411
|
+
end
|
412
|
+
|
413
|
+
context 'when the date string formatter is present' do
|
414
|
+
before do
|
415
|
+
class TestFormatter
|
416
|
+
def self.format(date_string)
|
417
|
+
'12/31/1995'
|
418
|
+
end
|
419
|
+
end
|
420
|
+
|
421
|
+
MultiparameterDateTime.date_string_formatter = TestFormatter
|
422
|
+
end
|
423
|
+
|
424
|
+
after do
|
425
|
+
MultiparameterDateTime.date_string_formatter = nil
|
426
|
+
end
|
427
|
+
|
428
|
+
it 'uses a formatted date string' do
|
429
|
+
expect(Time.zone).to receive(:parse)
|
430
|
+
.with("#{'12/31/1995'} #{foo_time_part}")
|
431
|
+
|
432
|
+
model.new(foo_date_part: foo_date_part, foo_time_part: foo_time_part)
|
433
|
+
end
|
434
|
+
end
|
435
|
+
end
|
393
436
|
end
|
394
437
|
end
|
395
438
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: multiparameter_date_time
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Case Commons, LLC
|
@@ -11,76 +11,76 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2015-06-09 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: american_date
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
|
-
- -
|
20
|
+
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: activesupport
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
|
-
- - ~>
|
34
|
+
- - "~>"
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: '4.0'
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- - ~>
|
41
|
+
- - "~>"
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: '4.0'
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: activerecord
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
47
47
|
requirements:
|
48
|
-
- -
|
48
|
+
- - ">="
|
49
49
|
- !ruby/object:Gem::Version
|
50
50
|
version: '0'
|
51
51
|
type: :development
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
|
-
- -
|
55
|
+
- - ">="
|
56
56
|
- !ruby/object:Gem::Version
|
57
57
|
version: '0'
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
60
|
requirement: !ruby/object:Gem::Requirement
|
61
61
|
requirements:
|
62
|
-
- - ~>
|
62
|
+
- - "~>"
|
63
63
|
- !ruby/object:Gem::Version
|
64
64
|
version: '2.11'
|
65
65
|
type: :development
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
|
-
- - ~>
|
69
|
+
- - "~>"
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: '2.11'
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: with_model
|
74
74
|
requirement: !ruby/object:Gem::Requirement
|
75
75
|
requirements:
|
76
|
-
- - ~>
|
76
|
+
- - "~>"
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: '1.0'
|
79
79
|
type: :development
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
|
-
- - ~>
|
83
|
+
- - "~>"
|
84
84
|
- !ruby/object:Gem::Version
|
85
85
|
version: '1.0'
|
86
86
|
description:
|
@@ -93,8 +93,8 @@ executables: []
|
|
93
93
|
extensions: []
|
94
94
|
extra_rdoc_files: []
|
95
95
|
files:
|
96
|
-
- .gitignore
|
97
|
-
- .travis.yml
|
96
|
+
- ".gitignore"
|
97
|
+
- ".travis.yml"
|
98
98
|
- Gemfile
|
99
99
|
- LICENSE
|
100
100
|
- README.md
|
@@ -116,17 +116,17 @@ require_paths:
|
|
116
116
|
- lib
|
117
117
|
required_ruby_version: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- -
|
119
|
+
- - ">="
|
120
120
|
- !ruby/object:Gem::Version
|
121
121
|
version: 1.9.2
|
122
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
|
-
- -
|
124
|
+
- - ">="
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
127
|
requirements: []
|
128
128
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.
|
129
|
+
rubygems_version: 2.4.5
|
130
130
|
signing_key:
|
131
131
|
specification_version: 4
|
132
132
|
summary: Set a DateTime via two accessors, one for the date, one for the time
|