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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cc1eea3e799afaea638efdcc1645bdbfba18e318
4
- data.tar.gz: 10d6c473ac9637c7eb2b400281c7162b8158ebc6
3
+ metadata.gz: 7381f0e66afc24dd1f79694873be9f0a864a3ca6
4
+ data.tar.gz: 7ad31ba5b90b6b455f320155095085bba2eadb30
5
5
  SHA512:
6
- metadata.gz: fd205312d71f61b3a423bcea265d3dca8df3383e4e7415d4521577dfdc612737e7cc152a07a16238d72bf0592241bdd303f2695e13100086b9e25e17d6806948
7
- data.tar.gz: cd9a2f9ca3746fac6c31e5089f9349f456cfc9b5de96b821ce5376b8e6a6365deb01251f10d103d4364f9fa75d352397a85a6c51703c382614486b73070349a0
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 )
@@ -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"
@@ -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)
@@ -0,0 +1,11 @@
1
+ require "active_record"
2
+
3
+ module InterpretDate
4
+ class DateType < ActiveRecord::Type::Date
5
+ include InterpretDate
6
+
7
+ def cast(value)
8
+ super(interpret_date(value) || value)
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module InterpretDate
2
- VERSION = "1.1.1"
2
+ VERSION = "1.3.0"
3
3
  end
@@ -6,6 +6,7 @@ RSpec.describe InterpretDate do
6
6
 
7
7
  {
8
8
  "mmddyy" => "020690",
9
+ "mmddyyyy" => "02061990",
9
10
  "m/d/yy" => "2/6/90",
10
11
  "m/d/yyyy" => "2/6/1990",
11
12
  "mm/dd/yy" => "02/06/90",
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.1.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-03-06 00:00:00.000000000 Z
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
- - ".gitignore"
64
- - ".rspec"
65
- - ".travis.yml"
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.5.1
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.