csv_party 0.0.1.pre2 → 0.0.1.pre3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/csv_party.rb +29 -18
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e5823d9eec07faf638ab898d7082be890c73373
|
4
|
+
data.tar.gz: f3b115f8fd4055e141629fc3fc92ac39278dbb2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c89169637d692dec361b79b87e5e392050224e43869f0d7a6f66decb3ca1edaed8e7dab777a288ac17c5557ef2964bc5f51a80a841f73601158e22021bf44e5
|
7
|
+
data.tar.gz: 4b677735ca562a25d30fd1a46b999d2803b4f73cf187db340f33f373c7acda071f96ffe1614dc6c51dbde7f2ceddc40c88a4738afb44f97ba40b3703f31accce
|
data/lib/csv_party.rb
CHANGED
@@ -35,7 +35,13 @@ class CSVParty
|
|
35
35
|
parser = options[:parser]
|
36
36
|
|
37
37
|
unparsed_row[name] = unparsed_value
|
38
|
-
parsed_row[name] =
|
38
|
+
parsed_row[name] = if options[:blanks_as_nil] && is_blank?(unparsed_value)
|
39
|
+
nil
|
40
|
+
elsif parser.is_a? Symbol
|
41
|
+
send(parser, unparsed_value)
|
42
|
+
else
|
43
|
+
instance_exec(unparsed_value, &parser)
|
44
|
+
end
|
39
45
|
end
|
40
46
|
|
41
47
|
parsed_row['unparsed'] = unparsed_row
|
@@ -57,20 +63,22 @@ class CSVParty
|
|
57
63
|
raise_if_duplicate_column(name)
|
58
64
|
raise_if_missing_header(name, options)
|
59
65
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
66
|
+
options = {
|
67
|
+
blanks_as_nil: (options[:as] == :raw ? false : true),
|
68
|
+
as: :string
|
69
|
+
}.merge(options)
|
70
|
+
|
71
|
+
parser = if block_given?
|
72
|
+
block
|
73
|
+
else
|
74
|
+
"#{options[:as]}_parser".to_sym
|
75
|
+
end
|
76
|
+
|
77
|
+
columns[name] = {
|
78
|
+
header: options[:header],
|
79
|
+
parser: parser,
|
80
|
+
blanks_as_nil: options[:blanks_as_nil]
|
81
|
+
}
|
74
82
|
end
|
75
83
|
|
76
84
|
def self.columns
|
@@ -120,6 +128,10 @@ class CSVParty
|
|
120
128
|
|
121
129
|
private
|
122
130
|
|
131
|
+
def is_blank?(value)
|
132
|
+
value.nil? || value.strip.empty?
|
133
|
+
end
|
134
|
+
|
123
135
|
def raw_parser(value)
|
124
136
|
value
|
125
137
|
end
|
@@ -133,7 +145,6 @@ class CSVParty
|
|
133
145
|
end
|
134
146
|
|
135
147
|
def integer_parser(value)
|
136
|
-
return nil if value.nil? || value.strip.empty?
|
137
148
|
value.to_i
|
138
149
|
end
|
139
150
|
|
@@ -147,7 +158,7 @@ class CSVParty
|
|
147
158
|
end
|
148
159
|
|
149
160
|
def columns_with_named_parsers
|
150
|
-
columns.select { |_name, options| options.
|
161
|
+
columns.select { |_name, options| options[:parser].is_a? Symbol }
|
151
162
|
end
|
152
163
|
|
153
164
|
# This error has to be raised at runtime because, when the class body
|
@@ -155,7 +166,7 @@ class CSVParty
|
|
155
166
|
# they are defined above the column definitions in the class body
|
156
167
|
def raise_unless_named_parsers_are_valid
|
157
168
|
columns_with_named_parsers.each do |name, options|
|
158
|
-
parser = options[:
|
169
|
+
parser = options[:parser]
|
159
170
|
next if named_parsers.include? parser
|
160
171
|
|
161
172
|
parser = parser.to_s.gsub('_parser', '')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csv_party
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.pre3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rico Jones
|
@@ -17,7 +17,7 @@ extensions: []
|
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
19
|
- lib/csv_party.rb
|
20
|
-
homepage:
|
20
|
+
homepage: https://github.com/toasterlovin/csv_party
|
21
21
|
licenses:
|
22
22
|
- MIT
|
23
23
|
metadata: {}
|