smarter_csv 1.6.0 → 1.6.1
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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9be5f053e15e157d7d28555b4de894d2761d5918203da45f5fc4e6c5adcc2a3f
|
4
|
+
data.tar.gz: a47394f3d1f985960a64abf1a43ce6ebf9b8217af2c01a0c5f053af8c77c09ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f27113af8a5771d89ac5c8783f1f69645c24bb576dafd97de17b0d8db8fff74dc396b42450802f9332c9f8b32a02ee18dabbc5dbc2daa91c75f957a678e99099
|
7
|
+
data.tar.gz: 5b2c2f3cbfc17b43c030c4c4c261962818bfbb2ce1a0ecd88f394682b75b75a64a2d8b6afcc0e4b99b97d39ef4b645de143cbb5f595e7aa9d661e66b1a53e98f
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
|
2
2
|
# SmarterCSV 1.x Change Log
|
3
3
|
|
4
|
+
## 1.6.1 (2022-05-06)
|
5
|
+
* unused keys in `key_mapping` generate a warning, no longer raise an exception
|
6
|
+
|
4
7
|
## 1.6.0 (2022-05-03)
|
5
8
|
* completely rewrote line parser
|
6
9
|
* added methods `SmarterCSV.raw_headers` and `SmarterCSV.headers` to allow easy examination of how the headers are processed.
|
@@ -62,6 +62,7 @@ module SmarterCSV
|
|
62
62
|
# cater for the quoted csv data containing the row separator carriage return character
|
63
63
|
# in which case the row data will be split across multiple lines (see the sample content in spec/fixtures/carriage_returns_rn.csv)
|
64
64
|
# by detecting the existence of an uneven number of quote characters
|
65
|
+
|
65
66
|
multiline = line.count(options[:quote_char])%2 == 1 # should handle quote_char nil
|
66
67
|
while line.count(options[:quote_char])%2 == 1 # should handle quote_char nil
|
67
68
|
next_line = fh.readline(options[:row_sep])
|
@@ -75,7 +76,6 @@ module SmarterCSV
|
|
75
76
|
|
76
77
|
dataA, data_size = parse(line, options, header_size)
|
77
78
|
|
78
|
-
dataA.map!{|x| x.sub(/(#{options[:col_sep]})+\z/, '')} # remove any unwanted trailing col_sep characters at the end
|
79
79
|
dataA.map!{|x| x.strip} if options[:strip_whitespace]
|
80
80
|
|
81
81
|
# if all values are blank, then ignore this line
|
@@ -420,7 +420,7 @@ module SmarterCSV
|
|
420
420
|
if ! key_mappingH.nil? && key_mappingH.class == Hash && key_mappingH.keys.size > 0
|
421
421
|
# we can't map keys that are not there
|
422
422
|
missing_keys = key_mappingH.keys - headerA
|
423
|
-
|
423
|
+
puts "WARNING: missing header(s): #{missing_keys.join(",")}" unless missing_keys.empty?
|
424
424
|
|
425
425
|
headerA.map!{|x| key_mappingH.has_key?(x) ? (key_mappingH[x].nil? ? nil : key_mappingH[x]) : (options[:remove_unmapped_keys] ? nil : x)}
|
426
426
|
end
|
data/lib/smarter_csv/version.rb
CHANGED
@@ -17,12 +17,12 @@ describe 'duplicate headers' do
|
|
17
17
|
}.to raise_exception(SmarterCSV::DuplicateHeaders)
|
18
18
|
end
|
19
19
|
|
20
|
-
it '
|
20
|
+
it 'does not raise error on missing mapped headers and includes missing headers in message' do
|
21
|
+
# the mapping is right, but the underlying csv file is bad
|
22
|
+
options = {:key_mapping => {:email => :a, :firstname => :b, :lastname => :c, :manager_email => :d, :age => :e} }
|
21
23
|
expect {
|
22
|
-
# the mapping is right, but the underlying csv file is bad
|
23
|
-
options = {:key_mapping => {:email => :a, :firstname => :b, :lastname => :c, :manager_email => :d, :age => :e} }
|
24
24
|
SmarterCSV.process("#{fixture_path}/duplicate_headers.csv", options)
|
25
|
-
}.
|
25
|
+
}.not_to raise_exception(SmarterCSV::KeyMappingError)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -28,11 +28,11 @@ describe 'test exceptions for invalid headers' do
|
|
28
28
|
}.to raise_exception(SmarterCSV::MissingHeaders)
|
29
29
|
end
|
30
30
|
|
31
|
-
it '
|
31
|
+
it 'does not raise error on missing mapped headers and includes missing headers in message' do
|
32
|
+
# :age does not exist in the CSV header
|
33
|
+
options = {:key_mapping => {:email => :a, :firstname => :b, :lastname => :c, :manager_email => :d, :age => :e} }
|
32
34
|
expect {
|
33
|
-
# :age does not exist in the CSV header
|
34
|
-
options = {:key_mapping => {:email => :a, :firstname => :b, :lastname => :c, :manager_email => :d, :age => :e} }
|
35
35
|
SmarterCSV.process("#{fixture_path}/user_import.csv", options)
|
36
|
-
}.
|
36
|
+
}.not_to raise_exception(SmarterCSV::KeyMappingError)
|
37
37
|
end
|
38
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smarter_csv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tilo Sloboda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-05-
|
11
|
+
date: 2022-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|