ndr_import 4.1.1 → 4.1.2

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: 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