csv_importable 0.1.9 → 0.1.10

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: 08a19b1bc64a60ce3c55879dc56570baf6a65878
4
- data.tar.gz: 77c5aa2a3a557be40a01a10f2adf37706b770c4f
3
+ metadata.gz: 34ba9cd0036b05b38eb8d8f292d0e99cfc3f9d46
4
+ data.tar.gz: 06d42511e5f3664c1949166a51dd6aa2b2d3e293
5
5
  SHA512:
6
- metadata.gz: 4c1c9954d78f6b6e1b9f2aaf9cbdaea9c323c73a3d85db6ccc637d29fc5b517d4ebeb71e1b935b7aeab806a1769a0031c4f7a6e10bafa1481420f013cec3b553
7
- data.tar.gz: 2878b730d4ef523e3c8d8cf28e04fbce63c6faa32cbba609ce2883724a944d2a8c517a718d1b38ef949b11c06dbf92f26c6c2c9798c1526f942aafc9ef53ddec
6
+ metadata.gz: 350527c95380b0f646c6daf9cdb5ec7c1d525eb9b5132ccc509753c7983f5cdbbbd297dc5816b6e6bea18f5a1aa7e9dc95589f6c601a6225c2a035d9de66adfb
7
+ data.tar.gz: d5981a6587dff38495c75d997676abd7b42777a7c26ee333a8dae25c654d0379fdd635f27b529a8ec749eab2d617289f8b32559d458a04263ab6f811bc5e2a69
data/README.md CHANGED
@@ -299,6 +299,7 @@ If the parser fails to coerce the data properly, it will add an error message to
299
299
  - pull_date
300
300
  - pull_float
301
301
  - pull_integer
302
+ - pull_us_zip
302
303
  - pull_select (e.g. `pull_select('color', options: ['Red', 'Green', 'Blue'])`)
303
304
 
304
305
  Basic syntax: `pull_string(column_key, args)` where `column_key` is the CSV header string for the column and `args` is a hash with the following defaults: `{ required: false, row: row }`
@@ -28,7 +28,11 @@ module CSVImportable
28
28
  CSVImportable::TypeParser::SelectTypeParser
29
29
  end
30
30
 
31
- [:string, :date, :boolean, :integer, :float, :percent, :select].each do |parser_type|
31
+ def us_zip_type_class
32
+ CSVImportable::TypeParser::USZipTypeParser
33
+ end
34
+
35
+ [:string, :date, :boolean, :integer, :float, :percent, :select, :us_zip].each do |parser_type|
32
36
  define_method("pull_#{parser_type}") do |key, options={}|
33
37
  csv_row = options.fetch(:row, @row)
34
38
  options = options.merge(row: csv_row)
@@ -27,44 +27,44 @@ module CSVImportable
27
27
 
28
28
  private
29
29
 
30
- def after_init(args)
31
- # hook for subclasses
32
- end
30
+ def after_init(args)
31
+ # hook for subclasses
32
+ end
33
33
 
34
- def pull_value_from_row
35
- return nil unless row
36
- # handle both caps and lowercase
37
- row.field(key) || row.field(key.upcase) || row.field(key.downcase)
38
- end
34
+ def pull_value_from_row
35
+ return nil unless row
36
+ # handle both caps and lowercase
37
+ row.field(key) || row.field(key.upcase) || row.field(key.downcase)
38
+ end
39
39
 
40
- def parse_val
41
- # hook for subclasses
42
- fail 'parse_val is a required method for subclass'
43
- end
40
+ def parse_val
41
+ # hook for subclasses
42
+ fail 'parse_val is a required method for subclass'
43
+ end
44
44
 
45
- def raise_parsing_error
46
- raise error_message
47
- end
45
+ def raise_parsing_error
46
+ raise error_message
47
+ end
48
48
 
49
- def error_message
50
- fail 'error_message is a requird method for subclass'
51
- end
49
+ def error_message
50
+ fail 'error_message is a requird method for subclass'
51
+ end
52
52
 
53
- def raise_required_error
54
- raise required_error_message
55
- end
53
+ def raise_required_error
54
+ raise required_error_message
55
+ end
56
56
 
57
- def required_error_message
58
- "#{key} is blank"
59
- end
57
+ def required_error_message
58
+ "#{key} is blank"
59
+ end
60
60
 
61
- def required?
62
- required
63
- end
61
+ def required?
62
+ required
63
+ end
64
64
 
65
- def check_required
66
- return raise_required_error if required?
67
- end
65
+ def check_required
66
+ return raise_required_error if required?
67
+ end
68
68
  end
69
69
  end
70
70
 
@@ -75,3 +75,4 @@ require_relative './type_parser/integer_type_parser'
75
75
  require_relative './type_parser/percent_type_parser'
76
76
  require_relative './type_parser/select_type_parser'
77
77
  require_relative './type_parser/string_type_parser'
78
+ require_relative './type_parser/us_zip_type_parser'
@@ -0,0 +1,18 @@
1
+ module CSVImportable
2
+ class TypeParser::USZipTypeParser < TypeParser
3
+ def parse_val
4
+ val = value.delete('-')
5
+ not_digits unless val.count('0-9') == val.length
6
+ return value if val.length == 9
7
+ val.rjust(5, '0')
8
+ end
9
+
10
+ def not_digits
11
+ raise
12
+ end
13
+
14
+ def error_message
15
+ "Invalid value for column: #{key}. Value should contain only numbers or a dash."
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module CsvImportable
2
- VERSION = "0.1.9"
2
+ VERSION = "0.1.10"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csv_importable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Francis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-28 00:00:00.000000000 Z
11
+ date: 2017-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -97,6 +97,7 @@ files:
97
97
  - lib/csv_importable/type_parser/percent_type_parser.rb
98
98
  - lib/csv_importable/type_parser/select_type_parser.rb
99
99
  - lib/csv_importable/type_parser/string_type_parser.rb
100
+ - lib/csv_importable/type_parser/us_zip_type_parser.rb
100
101
  - lib/csv_importable/version.rb
101
102
  homepage: https://github.com/LaunchPadLab/csv_importable
102
103
  licenses: []