split_date_time 1.0.0 → 1.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +3 -0
- data/lib/split_date_time/splitter.rb +7 -4
- data/lib/split_date_time/version.rb +1 -1
- data/spec/splitter_spec.rb +10 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 196ee61038b6c87cf4ff8aa83ca2ae108ccc1352
|
4
|
+
data.tar.gz: 7d492f0509048472fc26f91c87ae25cafc0f2536
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57e584fcdb95bbebd19d29a667300d25b227926f676a2491f1477912a28daadf8bce29ee887609adff5a3097e1bf3d40b98972f71ea43cb48db33939cc8ae6d7
|
7
|
+
data.tar.gz: da315ba011ec2c46542b301da3e90f0ad1d6c4c6aa7ebb7e28176eee6c9144ca9876eb326029f280655155366442d238a0d0e711ab7e3dc1498bf7cde3b59ca3
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# SplitDateTime
|
2
2
|
|
3
|
+
[](https://codeclimate.com/github/ccallebs/split_date_time)
|
4
|
+
[](https://codeclimate.com/github/ccallebs/split_date_time)
|
5
|
+
|
3
6
|
A simple gem that allows you to split a DateTime field into a Date and a Time field for separate processing.
|
4
7
|
|
5
8
|
## Installation
|
@@ -34,21 +34,24 @@ module SplitDateTime
|
|
34
34
|
|
35
35
|
module ClassMethods
|
36
36
|
def split_date_time(field, options = {})
|
37
|
-
define_split_accessors(field, options[:prefix])
|
37
|
+
define_split_accessors(field, options[:prefix], options[:date_format], options[:time_format])
|
38
38
|
define_concatenation_callback(field, options[:prefix])
|
39
39
|
end
|
40
40
|
|
41
|
-
def define_split_accessors(field, prefix = nil)
|
41
|
+
def define_split_accessors(field, prefix = nil, date_format = nil, time_format = nil)
|
42
|
+
time_format ||= '%H:%M'
|
43
|
+
date_format ||= '%m/%d/%Y'
|
44
|
+
|
42
45
|
define_method Naming.time_getter(field, prefix) do
|
43
46
|
field_val = send(field)
|
44
|
-
field_val.strftime(
|
47
|
+
field_val.strftime(time_format) if field_val.present?
|
45
48
|
end
|
46
49
|
define_method Naming.time_setter(field, prefix) do |val|
|
47
50
|
instance_variable_set :"@#{Naming.time_getter(field, prefix)}", val
|
48
51
|
end
|
49
52
|
define_method Naming.date_getter(field, prefix) do
|
50
53
|
field_val = send(field)
|
51
|
-
field_val.strftime(
|
54
|
+
field_val.strftime(date_format) if field_val.present?
|
52
55
|
end
|
53
56
|
define_method Naming.date_setter(field, prefix) do |val|
|
54
57
|
instance_variable_set :"@#{Naming.date_getter(field, prefix)}", val
|
data/spec/splitter_spec.rb
CHANGED
@@ -5,10 +5,11 @@ describe SplitDateTime::Splitter do
|
|
5
5
|
class TestClass
|
6
6
|
include SplitDateTime::Splitter
|
7
7
|
|
8
|
-
attr_accessor :test_field_1, :test_field_2
|
8
|
+
attr_accessor :test_field_1, :test_field_2, :custom_format
|
9
9
|
|
10
10
|
split_date_time :test_field_1
|
11
11
|
split_date_time :test_field_2, prefix: :other
|
12
|
+
split_date_time :custom_format, date_format: '%m/%y', time_format: '%H:%M %p'
|
12
13
|
end
|
13
14
|
|
14
15
|
context '#initialization' do
|
@@ -44,6 +45,12 @@ describe SplitDateTime::Splitter do
|
|
44
45
|
subject.should respond_to(:other_date)
|
45
46
|
subject.should respond_to(:other_time)
|
46
47
|
end
|
48
|
+
|
49
|
+
it 'uses custom date format when provided' do
|
50
|
+
subject.custom_format = DateTime.parse("12/12/2014 01:15:24 AM")
|
51
|
+
expect(subject.custom_format_date).to eq('12/14')
|
52
|
+
expect(subject.custom_format_time).to eq('01:15 AM')
|
53
|
+
end
|
47
54
|
end
|
48
55
|
|
49
56
|
context '#callbacks' do
|
@@ -64,13 +71,13 @@ describe SplitDateTime::Splitter do
|
|
64
71
|
it 'should show field as modified if both date and time are touched' do
|
65
72
|
subject.test_field_1_date = '03/03/2014'
|
66
73
|
subject.test_field_1_time = '01:15'
|
67
|
-
subject.test_field_1_modified
|
74
|
+
expect(subject.test_field_1_modified?).to eq(true)
|
68
75
|
end
|
69
76
|
|
70
77
|
it 'should show field as modified if only date or time were touched' do
|
71
78
|
subject.test_field_1 = DateTime.parse("03/03/2014 01:15:24 AM")
|
72
79
|
subject.test_field_1_date = '05/05/2014'
|
73
|
-
subject.test_field_1_modified
|
80
|
+
expect(subject.test_field_1_modified?).to eq(true)
|
74
81
|
end
|
75
82
|
end
|
76
83
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: split_date_time
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chuck Callebs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -133,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
133
|
version: '0'
|
134
134
|
requirements: []
|
135
135
|
rubyforge_project:
|
136
|
-
rubygems_version: 2.2.
|
136
|
+
rubygems_version: 2.2.2
|
137
137
|
signing_key:
|
138
138
|
specification_version: 4
|
139
139
|
summary: Allows DateTime fields to be split into a Date field and a Time field.
|