interpret_date 1.1.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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.