ndr_import 4.1.1 → 4.1.2

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: 49d7bbcf9d60dbced9953f7cc2db6f65d18ef2d5
4
- data.tar.gz: ad595813359e1552b8ef74e3e9593f3bf3632ca9
3
+ metadata.gz: 48a0ef9610f39b40881de9c2cbd4d79ac2fe197e
4
+ data.tar.gz: 69303c1297dcb5db806b996e95afad84fd31cae4
5
5
  SHA512:
6
- metadata.gz: 51807710e98e5dab6f0f13880d3dac921580897174e23e91683c2aff4784bd3eea99380112274578b0b1b58d569f3ab6c9865158081c0d744967b80786983986
7
- data.tar.gz: 2fe6008c0e1e43c772e127899e4ae6e243c071cc3069e5bf7d4a79c56b467d31eac700f719a212c1bafa4a1c02af3bf156283a249f0039aa0f1995e8c4fef7ef
6
+ metadata.gz: 877ff4160d5eeb02f372cae707118fffad4e8b0b702435753cdd06095b11097ac41a5a2010827936449d1f7656df9fbb62196cc7dc756be16a57f8a1e94c92f3
7
+ data.tar.gz: d330674f04f8bbd6cc50197ed48d75943182209ed2d20721b95bedb3fadc93d9105572d2c76f5ce9d595d1f8c2ed64276905244067f107b1bc0216c69b81131a
data/code_safety.yml CHANGED
@@ -74,8 +74,8 @@ file safety:
74
74
  safe_revision: a8451809db86e0e023b0d93826114a33ff896c4f
75
75
  lib/ndr_import/file/delimited.rb:
76
76
  comments:
77
- reviewed_by: joshpencheon
78
- safe_revision: 4f7588ef0246bfced14f42b247436507568422a2
77
+ reviewed_by: josh.pencheon
78
+ safe_revision: 62702f103dd41c188684cfda73a94401b130cd01
79
79
  lib/ndr_import/file/excel.rb:
80
80
  comments:
81
81
  reviewed_by: joshpencheon
@@ -126,8 +126,8 @@ file safety:
126
126
  safe_revision: 6c6f204fab2f4232d81cb76aa523c26b0c490ae7
127
127
  lib/ndr_import/mapper.rb:
128
128
  comments:
129
- reviewed_by: joshpencheon
130
- safe_revision: 582ce42b27ce3813efa7f93e09928e8f228ba6df
129
+ reviewed_by: josh.pencheon
130
+ safe_revision: fc27767d88956ef8e1182d6c1a6335266d34f7c5
131
131
  lib/ndr_import/mapping_error.rb:
132
132
  comments:
133
133
  reviewed_by: timgentry
@@ -171,19 +171,19 @@ file safety:
171
171
  lib/ndr_import/version.rb:
172
172
  comments: another check?
173
173
  reviewed_by: josh.pencheon
174
- safe_revision: db6baab3610d561026a405c4a6bef683dbba3ca0
174
+ safe_revision: 5b8e738929c12ccf800a2729d567fdf57a1bc159
175
175
  ndr_import.gemspec:
176
176
  comments:
177
177
  reviewed_by: josh.pencheon
178
- safe_revision: 0a8fccbac2a264adcdae7e46df54da25dc9cfdcd
178
+ safe_revision: c84ea01ab925addd5aa744ea8bc5382df5a1583d
179
179
  test/file/base_test.rb:
180
180
  comments:
181
181
  reviewed_by: timgentry
182
182
  safe_revision: a8451809db86e0e023b0d93826114a33ff896c4f
183
183
  test/file/delimited_test.rb:
184
184
  comments:
185
- reviewed_by: timgentry
186
- safe_revision: c88000b32401b5ae9ef7f5878a9b630506ab5a94
185
+ reviewed_by: josh.pencheon
186
+ safe_revision: 62702f103dd41c188684cfda73a94401b130cd01
187
187
  test/file/excel_test.rb:
188
188
  comments:
189
189
  reviewed_by: joshpencheon
@@ -406,8 +406,8 @@ file safety:
406
406
  safe_revision: e70ece909c44b26208eaff3cf27ada7145e03f11
407
407
  test/test_helper.rb:
408
408
  comments:
409
- reviewed_by: joshpencheon
410
- safe_revision: 646c08329cba0ba8ea2c37226cf26434da29c747
409
+ reviewed_by: josh.pencheon
410
+ safe_revision: 53cc0af4321b64746367231b65821fda0f8d8a0a
411
411
  test/universal_importer_helper_test.rb:
412
412
  comments:
413
413
  reviewed_by: josh.pencheon
@@ -27,15 +27,20 @@ module NdrImport
27
27
  return enum_for(:rows) unless block_given?
28
28
 
29
29
  safe_path = SafeFile.safepath_to_string(@filename)
30
- encodings = determine_encodings!(safe_path)
31
30
 
32
31
  # By now, we know `encodings` should let us read the whole
33
32
  # file succesfully; if there are problems, we should crash.
34
- CSVLibrary.foreach(safe_path, encodings) do |line|
33
+ CSVLibrary.foreach(safe_path, encodings(safe_path)) do |line|
35
34
  yield line.map(&:to_s)
36
35
  end
37
36
  end
38
37
 
38
+ # Cache the determined encodings, so rewinding the enumerator doesn't
39
+ # have to redo this, but equally it is still done lazily:
40
+ def encodings(safe_path)
41
+ @encodings ||= determine_encodings!(safe_path)
42
+ end
43
+
39
44
  # Derive the source encoding by trying all supported encodings.
40
45
  # Returns first set of working options, or raises if none could be found.
41
46
  def determine_encodings!(safe_path)
@@ -17,12 +17,22 @@ module NdrImport::Mapper
17
17
 
18
18
  # the replace option can be used before any other mapping option
19
19
  def replace_before_mapping(original_value, field_mapping)
20
- return unless field_mapping.include?('replace') && original_value
20
+ return unless original_value && field_mapping.include?('replace')
21
21
 
22
- [field_mapping['replace']].flatten.each do |field_replacement|
23
- field_replacement.each do |pattern, replacement|
24
- Array(original_value).each { |val| val.gsub!(pattern, replacement) }
25
- end
22
+ replaces = field_mapping['replace']
23
+
24
+ if replaces.is_a?(Array)
25
+ replaces.each { |repls| apply_replaces(original_value, repls) }
26
+ else
27
+ apply_replaces(original_value, replaces)
28
+ end
29
+ end
30
+
31
+ def apply_replaces(value, replaces)
32
+ if value.is_a?(Array)
33
+ value.each { |val| apply_replaces(val, replaces) }
34
+ else
35
+ replaces.each { |pattern, replacement| value.gsub!(pattern, replacement) }
26
36
  end
27
37
  end
28
38
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  # This stores the current version of the NdrImport gem
3
3
  module NdrImport
4
- VERSION = '4.1.1'.freeze
4
+ VERSION = '4.1.2'.freeze
5
5
  end
data/ndr_import.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency 'activesupport', '>= 3.2.18', '< 5.1'
23
23
  spec.add_dependency 'ndr_support', '>= 4.1.2', '< 6'
24
24
 
25
- spec.add_dependency 'rubyzip', '~> 1.1'
25
+ spec.add_dependency 'rubyzip', '~> 1.2', '>= 1.2.1'
26
26
  spec.add_dependency 'roo', '~> 2.0'
27
27
 
28
28
  spec.add_dependency 'nokogiri', '~> 1.6'
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
36
36
  spec.add_development_dependency 'bundler', '~> 1.7'
37
37
  spec.add_development_dependency 'rake', '~> 10.0'
38
38
  spec.add_development_dependency 'minitest'
39
+ spec.add_development_dependency 'mocha'
39
40
  spec.add_development_dependency 'ndr_dev_support', '~> 1.1', '>= 1.1.3'
40
41
  spec.add_development_dependency 'guard'
41
42
  spec.add_development_dependency 'guard-rubocop'
@@ -138,6 +138,23 @@ module NdrImport
138
138
  'Original: Missing or stray quote in line 2'
139
139
  assert_equal msg, exception.message
140
140
  end
141
+
142
+ test 'should only determine encodings once' do
143
+ file_path = @permanent_test_files.join('normal.csv')
144
+ handler = NdrImport::File::Delimited.new(file_path, 'csv', 'col_sep' => nil)
145
+
146
+ handler.expects(determine_encodings!: { encoding: 'bom|utf-8', col_sep: ',' }).once
147
+
148
+ 2.times do
149
+ handler.tables.each do |tablename, sheet|
150
+ assert_nil tablename
151
+ sheet = sheet.to_a
152
+ assert_equal(('A'..'Z').to_a, sheet[0])
153
+ assert_equal ['1'] * 26, sheet[1]
154
+ assert_equal ['2'] * 26, sheet[2]
155
+ end
156
+ end
157
+ end
141
158
  end
142
159
  end
143
160
  end
data/test/test_helper.rb CHANGED
@@ -24,3 +24,5 @@ SafePath.configure! File.dirname(__FILE__) + '/resources/filesystem_paths.yml'
24
24
  NdrImport::StandardMappings.mappings = YAML.load_file(
25
25
  File.expand_path(File.dirname(__FILE__) + '/resources/standard_mappings.yml')
26
26
  )
27
+
28
+ require 'mocha/mini_test'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ndr_import
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.1
4
+ version: 4.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - NCRS Development Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-29 00:00:00.000000000 Z
11
+ date: 2017-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -56,14 +56,20 @@ dependencies:
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: '1.1'
59
+ version: '1.2'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 1.2.1
60
63
  type: :runtime
61
64
  prerelease: false
62
65
  version_requirements: !ruby/object:Gem::Requirement
63
66
  requirements:
64
67
  - - "~>"
65
68
  - !ruby/object:Gem::Version
66
- version: '1.1'
69
+ version: '1.2'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 1.2.1
67
73
  - !ruby/object:Gem::Dependency
68
74
  name: roo
69
75
  requirement: !ruby/object:Gem::Requirement
@@ -190,6 +196,20 @@ dependencies:
190
196
  - - ">="
191
197
  - !ruby/object:Gem::Version
192
198
  version: '0'
199
+ - !ruby/object:Gem::Dependency
200
+ name: mocha
201
+ requirement: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ type: :development
207
+ prerelease: false
208
+ version_requirements: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
193
213
  - !ruby/object:Gem::Dependency
194
214
  name: ndr_dev_support
195
215
  requirement: !ruby/object:Gem::Requirement
@@ -410,7 +430,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
410
430
  version: '0'
411
431
  requirements: []
412
432
  rubyforge_project:
413
- rubygems_version: 2.6.5
433
+ rubygems_version: 2.5.2
414
434
  signing_key:
415
435
  specification_version: 4
416
436
  summary: NDR Import