interpret_date 1.1.1 → 1.3.0
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/README.md +27 -0
- data/interpret_date.gemspec +1 -0
- data/lib/interpret_date.rb +11 -0
- data/lib/interpret_date/date_type.rb +11 -0
- data/lib/interpret_date/version.rb +1 -1
- data/spec/interpret_date_spec.rb +1 -0
- metadata +29 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7381f0e66afc24dd1f79694873be9f0a864a3ca6
|
4
|
+
data.tar.gz: 7ad31ba5b90b6b455f320155095085bba2eadb30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22620d86d78d96a1163ba4b488b5b525e65a4684e41e91b4111c803677d2df17c2018eb7ef4fb11c27204cb48bbdd9809152befb11257138ada90ddc598f9206
|
7
|
+
data.tar.gz: 1df8d6113bced24b4b7423419f9c463799e501a483fa4be039acc2e2b7096a6033266c9dd915971661a3d7cfcdac4ebcce55e98246d5f6d480996262a99ef2e1
|
data/README.md
CHANGED
@@ -21,6 +21,8 @@ Or install it yourself as:
|
|
21
21
|
|
22
22
|
## Usage
|
23
23
|
|
24
|
+
### Instance Methods
|
25
|
+
|
24
26
|
To utilize `interpret_date`, mix in the `InterpretDate` module into a
|
25
27
|
class that needs to interpret American formatted dates into ruby Date
|
26
28
|
objects and pass the date string into the `interpret_date` or
|
@@ -42,6 +44,31 @@ class Parcel < ActiveRecord::Base
|
|
42
44
|
end
|
43
45
|
```
|
44
46
|
|
47
|
+
### ActiveRecord Date Type
|
48
|
+
|
49
|
+
You can also utilize `InterpretDate` with the ActiveRecord Attribute
|
50
|
+
API to automatically cast dates with their interpreted values.
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
class Parcel < ActiveRecord::Base
|
54
|
+
attribute :shipping_date, InterpretDate::DateType.new
|
55
|
+
end
|
56
|
+
```
|
57
|
+
|
58
|
+
If you plan on using the Date Type extensively you can register it in
|
59
|
+
an initializer.
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
# config/initializers/types.rb
|
63
|
+
ActiveRecord::Type.register(:interpreted_date, InterpretDate::DateType)
|
64
|
+
```
|
65
|
+
|
66
|
+
```ruby
|
67
|
+
class Parcel < ActiveRecord::Base
|
68
|
+
attribute :shipping_date, :interpreted_date
|
69
|
+
end
|
70
|
+
```
|
71
|
+
|
45
72
|
## Contributing
|
46
73
|
|
47
74
|
1. Fork it ( https://github.com/sqm/interpret_date/fork )
|
data/interpret_date.gemspec
CHANGED
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_runtime_dependency "activerecord", ">=4.2"
|
21
22
|
spec.add_development_dependency "bundler", "~> 1.6"
|
22
23
|
spec.add_development_dependency "rake"
|
23
24
|
spec.add_development_dependency "rspec", "~> 3.2"
|
data/lib/interpret_date.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "date"
|
2
|
+
require "interpret_date/date_type"
|
2
3
|
require "interpret_date/version"
|
3
4
|
|
4
5
|
module InterpretDate
|
@@ -25,6 +26,10 @@ module InterpretDate
|
|
25
26
|
/^\d{6}$/ =~ value
|
26
27
|
end
|
27
28
|
|
29
|
+
def contains_only_eight_digits(value)
|
30
|
+
/^\d{8}$/ =~ value
|
31
|
+
end
|
32
|
+
|
28
33
|
def convert_date(date_input)
|
29
34
|
# Only run the interpret_date code if we have a non-nil string,
|
30
35
|
# otherwise, use #to_date to strip any time or timezone info
|
@@ -36,6 +41,12 @@ module InterpretDate
|
|
36
41
|
month = date_input[0,2].to_i
|
37
42
|
day = date_input[2,2].to_i
|
38
43
|
year = date_input[4,2].to_i
|
44
|
+
elsif contains_only_eight_digits(date_input)
|
45
|
+
# The date_input only contains digits, and must
|
46
|
+
# be in the form MMDDYYYY
|
47
|
+
month = date_input[0,2].to_i
|
48
|
+
day = date_input[2,2].to_i
|
49
|
+
year = date_input[4,4].to_i
|
39
50
|
elsif db_formatted_date(date_input)
|
40
51
|
year, month, day = date_input.split("-").collect { |element| element.to_i }
|
41
52
|
elsif slash_based_date(date_input)
|
data/spec/interpret_date_spec.rb
CHANGED
metadata
CHANGED
@@ -1,55 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: interpret_date
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Squaremouth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activerecord
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.2'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
|
-
- -
|
31
|
+
- - ~>
|
18
32
|
- !ruby/object:Gem::Version
|
19
33
|
version: '1.6'
|
20
34
|
type: :development
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
|
-
- -
|
38
|
+
- - ~>
|
25
39
|
- !ruby/object:Gem::Version
|
26
40
|
version: '1.6'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- -
|
45
|
+
- - '>='
|
32
46
|
- !ruby/object:Gem::Version
|
33
47
|
version: '0'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- -
|
52
|
+
- - '>='
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rspec
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- -
|
59
|
+
- - ~>
|
46
60
|
- !ruby/object:Gem::Version
|
47
61
|
version: '3.2'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- -
|
66
|
+
- - ~>
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '3.2'
|
55
69
|
description: Module to provide helper methods for interpreting American formatted
|
@@ -60,15 +74,16 @@ executables: []
|
|
60
74
|
extensions: []
|
61
75
|
extra_rdoc_files: []
|
62
76
|
files:
|
63
|
-
-
|
64
|
-
-
|
65
|
-
-
|
77
|
+
- .gitignore
|
78
|
+
- .rspec
|
79
|
+
- .travis.yml
|
66
80
|
- Gemfile
|
67
81
|
- LICENSE.txt
|
68
82
|
- README.md
|
69
83
|
- Rakefile
|
70
84
|
- interpret_date.gemspec
|
71
85
|
- lib/interpret_date.rb
|
86
|
+
- lib/interpret_date/date_type.rb
|
72
87
|
- lib/interpret_date/version.rb
|
73
88
|
- spec/interpret_date_spec.rb
|
74
89
|
- spec/spec_helper.rb
|
@@ -82,17 +97,17 @@ require_paths:
|
|
82
97
|
- lib
|
83
98
|
required_ruby_version: !ruby/object:Gem::Requirement
|
84
99
|
requirements:
|
85
|
-
- -
|
100
|
+
- - '>='
|
86
101
|
- !ruby/object:Gem::Version
|
87
102
|
version: '0'
|
88
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
104
|
requirements:
|
90
|
-
- -
|
105
|
+
- - '>='
|
91
106
|
- !ruby/object:Gem::Version
|
92
107
|
version: '0'
|
93
108
|
requirements: []
|
94
109
|
rubyforge_project:
|
95
|
-
rubygems_version: 2.
|
110
|
+
rubygems_version: 2.0.14.1
|
96
111
|
signing_key:
|
97
112
|
specification_version: 4
|
98
113
|
summary: Mixin for easily parsing American formatted date strings into Date objects.
|