ndr_import 5.1.0 → 6.0.0

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: 411899f19141a2e2da38b712d76d4de02b00bda7
4
- data.tar.gz: 9feaaf50a3bb840974a0ce38ef66fee5ab32c19e
3
+ metadata.gz: 7781d10d01e028e81ddb0cccaacd8189a1e4e8dc
4
+ data.tar.gz: 1a0f2b9288d43be1f3caf0dcc68510b9feb95c22
5
5
  SHA512:
6
- metadata.gz: 4d10e6a1d6370dd513364cf6332daf14ab6fe75e9b320906fa6a93e4e08422e54ebe16755bfbbd966e05c130bf53eab329e84ef2b5e766acd600e7059fd939f6
7
- data.tar.gz: c824e74a89cfe9c9ded3f4a95b42f1be7bc31ae475b503264aa10e14621223691eb936dcd550792592ce7104c6eb278f7cb43059dacba916a26fc0f9ce4b8f6c
6
+ metadata.gz: 40f73db1effc623fde1c36b43ab3a016edac4ae308bc36a9aac7b9f4c515e94e8891e99413b758e75c306b30c2f9609e8e41577b491678b89d1b48bb884addf2
7
+ data.tar.gz: d352544945d48ebee58e62dd0a72ad7ab12101578d4ef6ae740e2f8c15925d023a54f0ef85746e45a47e227d99f3ef14e93d6eebd97632af0eafba5005a5f93a
@@ -75,7 +75,7 @@ file safety:
75
75
  lib/ndr_import/file/delimited.rb:
76
76
  comments:
77
77
  reviewed_by: josh.pencheon
78
- safe_revision: be12e57519d3737e8d3901d7b01485c6995708dd
78
+ safe_revision: 902f5326d85372d9632de9869d6f56fc02b83a10
79
79
  lib/ndr_import/file/excel.rb:
80
80
  comments:
81
81
  reviewed_by: joshpencheon
@@ -167,19 +167,19 @@ file safety:
167
167
  lib/ndr_import/table.rb:
168
168
  comments: uses File.basename
169
169
  reviewed_by: josh.pencheon
170
- safe_revision: 14775e7262dbec3b6d0f69930ff526f856a94214
170
+ safe_revision: 902f5326d85372d9632de9869d6f56fc02b83a10
171
171
  lib/ndr_import/universal_importer_helper.rb:
172
172
  comments:
173
173
  reviewed_by: josh.pencheon
174
- safe_revision: 36143ff4f48e0433a7b04b63143ef6d6d2481fec
174
+ safe_revision: 902f5326d85372d9632de9869d6f56fc02b83a10
175
175
  lib/ndr_import/version.rb:
176
176
  comments: another check?
177
- reviewed_by: ollie.tulloch
178
- safe_revision: fa21aae027f436337eb0de481e390cdbab348123
177
+ reviewed_by: josh.pencheon
178
+ safe_revision: 5adc16ab99f43a20c1bedcea8724258188ab64bd
179
179
  ndr_import.gemspec:
180
180
  comments:
181
- reviewed_by: ollie.tulloch
182
- safe_revision: a76d7fd03894158417411d0c9620ea4c1d5a03d6
181
+ reviewed_by: josh.pencheon
182
+ safe_revision: ea0a8c2eca882e5fe43d6dde203490033086a197
183
183
  test/file/base_test.rb:
184
184
  comments:
185
185
  reviewed_by: timgentry
@@ -187,7 +187,7 @@ file safety:
187
187
  test/file/delimited_test.rb:
188
188
  comments:
189
189
  reviewed_by: josh.pencheon
190
- safe_revision: be12e57519d3737e8d3901d7b01485c6995708dd
190
+ safe_revision: 902f5326d85372d9632de9869d6f56fc02b83a10
191
191
  test/file/excel_test.rb:
192
192
  comments:
193
193
  reviewed_by: joshpencheon
@@ -199,7 +199,7 @@ file safety:
199
199
  test/file/registry_test.rb:
200
200
  comments:
201
201
  reviewed_by: josh.pencheon
202
- safe_revision: f82e6839f7e3f9932a6f92242c03d94234fc1d82
202
+ safe_revision: 902f5326d85372d9632de9869d6f56fc02b83a10
203
203
  test/file/text_test.rb:
204
204
  comments:
205
205
  reviewed_by: timgentry
@@ -250,8 +250,8 @@ file safety:
250
250
  safe_revision: 63b1e8c275bd63377309d9b124176f39f75576a9
251
251
  test/non_tabular/table_test.rb:
252
252
  comments:
253
- reviewed_by: timgentry
254
- safe_revision: c9136301653bd7e6c4d16a8cfb8f40ad9ef6e836
253
+ reviewed_by: josh.pencheon
254
+ safe_revision: 902f5326d85372d9632de9869d6f56fc02b83a10
255
255
  test/non_tabular_file_helper_test.rb:
256
256
  comments:
257
257
  reviewed_by: timgentry
@@ -320,6 +320,10 @@ file safety:
320
320
  comments:
321
321
  reviewed_by: timgentry
322
322
  safe_revision: e13005efa08f7168c1c65c60ce97057287ace534
323
+ test/resources/high_ascii_delimited_example_two.txt:
324
+ comments:
325
+ reviewed_by: josh.pencheon
326
+ safe_revision: 902f5326d85372d9632de9869d6f56fc02b83a10
323
327
  test/resources/malformed.xml:
324
328
  comments:
325
329
  reviewed_by: timgentry
@@ -348,6 +352,10 @@ file safety:
348
352
  comments:
349
353
  reviewed_by: timgentry
350
354
  safe_revision: 45da71ebd3acbc0fe53755bcd75483ba17cb6924
355
+ test/resources/not_sign_delimited.txt:
356
+ comments:
357
+ reviewed_by: josh.pencheon
358
+ safe_revision: 902f5326d85372d9632de9869d6f56fc02b83a10
351
359
  test/resources/sample_xls.xls:
352
360
  comments:
353
361
  reviewed_by: timgentry
@@ -419,4 +427,4 @@ file safety:
419
427
  test/universal_importer_helper_test.rb:
420
428
  comments:
421
429
  reviewed_by: josh.pencheon
422
- safe_revision: 36143ff4f48e0433a7b04b63143ef6d6d2481fec
430
+ safe_revision: 902f5326d85372d9632de9869d6f56fc02b83a10
@@ -9,11 +9,8 @@ module NdrImport
9
9
  # This class is a delimited file handler that returns a single table.
10
10
  class Delimited < Base
11
11
  DELIMITED_COL_SEP = {
12
- 'csv' => nil,
13
- 'pipe' => '|',
14
- 'thorn' => "\xfe" # high-ascii (lower case thorn) delimited files
12
+ 'csv' => nil
15
13
  }
16
-
17
14
  def initialize(filename, format, options = {})
18
15
  super
19
16
 
@@ -86,6 +83,6 @@ module NdrImport
86
83
  end
87
84
  end
88
85
 
89
- Registry.register(Delimited, 'csv', 'pipe', 'thorn')
86
+ Registry.register(Delimited, 'csv', 'delimited')
90
87
  end
91
88
  end
@@ -10,7 +10,8 @@ module NdrImport
10
10
  include NdrImport::Mapper
11
11
 
12
12
  def self.all_valid_options
13
- %w(canonical_name filename_pattern tablename_pattern header_lines footer_lines format klass columns)
13
+ %w[canonical_name delimiter filename_pattern tablename_pattern header_lines footer_lines
14
+ format klass columns]
14
15
  end
15
16
 
16
17
  def all_valid_options
@@ -34,7 +34,8 @@ module NdrImport
34
34
 
35
35
  tables = NdrImport::File::Registry.tables(filename,
36
36
  table_mapping.try(:format),
37
- 'unzip_path' => unzip_path)
37
+ 'unzip_path' => unzip_path,
38
+ 'col_sep' => table_mapping.try(:delimiter))
38
39
  yield_tables_and_their_content(filename, tables, &block)
39
40
  end
40
41
  end
@@ -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 = '5.1.0'.freeze
4
+ VERSION = '6.0.0'.freeze
5
5
  end
@@ -39,7 +39,7 @@ Gem::Specification.new do |spec|
39
39
  spec.add_development_dependency 'rake', '~> 10.0'
40
40
  spec.add_development_dependency 'minitest'
41
41
  spec.add_development_dependency 'mocha'
42
- spec.add_development_dependency 'ndr_dev_support', '~> 3.0'
42
+ spec.add_development_dependency 'ndr_dev_support', '~> 3.1', '>= 3.1.3'
43
43
  spec.add_development_dependency 'guard'
44
44
  spec.add_development_dependency 'guard-rubocop'
45
45
  spec.add_development_dependency 'guard-test'
@@ -23,7 +23,7 @@ module NdrImport
23
23
 
24
24
  test 'should read pipe correctly' do
25
25
  file_path = @permanent_test_files.join('normal_pipe.csv')
26
- handler = NdrImport::File::Delimited.new(file_path, 'pipe', 'col_sep' => nil)
26
+ handler = NdrImport::File::Delimited.new(file_path, 'delimited', 'col_sep' => '|')
27
27
  handler.tables.each do |tablename, sheet|
28
28
  assert_nil tablename
29
29
  sheet = sheet.to_a
@@ -35,7 +35,7 @@ module NdrImport
35
35
 
36
36
  test 'should read thorn correctly' do
37
37
  file_path = @permanent_test_files.join('normal_thorn.csv')
38
- handler = NdrImport::File::Delimited.new(file_path, 'thorn', 'col_sep' => nil)
38
+ handler = NdrImport::File::Delimited.new(file_path, 'delimited', 'col_sep' => "\xfe")
39
39
  handler.tables.each do |tablename, sheet|
40
40
  assert_nil tablename
41
41
  sheet = sheet.to_a
@@ -71,7 +71,7 @@ module NdrImport
71
71
 
72
72
  test 'should read acsii-delimited csv' do
73
73
  file_path = @permanent_test_files.join('high_ascii_delimited.txt')
74
- handler = NdrImport::File::Delimited.new(file_path, 'csv', 'col_sep' => "\xfe")
74
+ handler = NdrImport::File::Delimited.new(file_path, 'delimited', 'col_sep' => "\xfe")
75
75
  handler.tables.each do |tablename, sheet|
76
76
  assert_nil tablename
77
77
  assert_instance_of Enumerator, sheet
@@ -82,6 +82,23 @@ module NdrImport
82
82
  end
83
83
  end
84
84
 
85
+ test 'should read acsii-delimited txt' do
86
+ rows = []
87
+ file_path = @permanent_test_files.join('high_ascii_delimited_example_two.txt')
88
+ handler = NdrImport::File::Delimited.new(file_path, 'delimited', 'col_sep' => "\xfd")
89
+ handler.tables.each do |tablename, sheet|
90
+ assert_nil tablename
91
+ assert_instance_of Enumerator, sheet
92
+ sheet.each do |row|
93
+ rows << row
94
+ end
95
+ end
96
+
97
+ assert_equal(('A'..'Z').to_a, rows[0])
98
+ assert_equal ['1'] * 26, rows[1]
99
+ assert_equal ['2'] * 26, rows[2]
100
+ end
101
+
85
102
  test 'should read line-by-line' do
86
103
  rows = []
87
104
  file_path = @permanent_test_files.join('normal.csv')
@@ -12,7 +12,7 @@ module NdrImport
12
12
 
13
13
  test 'Registry.handlers' do
14
14
  assert_instance_of Hash, NdrImport::File::Registry.handlers
15
- assert_equal %w(csv doc pdf pipe thorn txt xls xlsx zip),
15
+ assert_equal %w[csv delimited doc pdf txt xls xlsx zip],
16
16
  NdrImport::File::Registry.handlers.keys.sort
17
17
  end
18
18
 
@@ -47,10 +47,10 @@ STR
47
47
  end
48
48
 
49
49
  def test_all_valid_options
50
- valid_options = %w(
51
- canonical_name capture_start_line columns end_in_a_record end_line_pattern filename_pattern
52
- format klass remove_lines start_in_a_record start_line_pattern
53
- )
50
+ valid_options = %w[
51
+ canonical_name capture_start_line columns delimiter end_in_a_record end_line_pattern
52
+ filename_pattern format klass remove_lines start_in_a_record start_line_pattern
53
+ ]
54
54
  assert_equal valid_options.sort,
55
55
  NdrImport::NonTabular::Table.all_valid_options.sort
56
56
  end
@@ -0,0 +1,3 @@
1
+ A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z
2
+ 1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1
3
+ 2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2
@@ -0,0 +1,3 @@
1
+ one¬two¬three
2
+ some¬data¬here
3
+ more¬data¬here
@@ -46,6 +46,33 @@ class UniversalImporterHelperTest < ActiveSupport::TestCase
46
46
  refute enumerator_ran
47
47
  end
48
48
 
49
+ test 'extract and transform with bespoke delimiter' do
50
+ table_mappings = [
51
+ NdrImport::Table.new(filename_pattern: /\.txt\z/i,
52
+ format: 'delimited',
53
+ delimiter: '¬',
54
+ header_lines: 1,
55
+ footer_lines: 0,
56
+ klass: 'SomeTestClass',
57
+ columns: [{ 'column' => 'one' },
58
+ { 'column' => 'two' },
59
+ { 'column' => 'three' }])
60
+ ]
61
+ source_file = @permanent_test_files.join('not_sign_delimited.txt')
62
+ unzip_path = SafePath.new('test_space_rw').to_s
63
+ @test_importer.stubs(:get_table_mapping).returns(table_mappings.first)
64
+ @test_importer.extract(source_file, unzip_path) do |table, rows|
65
+ mapped_rows = table.transform(rows)
66
+
67
+ assert_instance_of NdrImport::Table, table
68
+ assert_instance_of Enumerator, rows
69
+ expected_mapped_data = [{ rawtext: { 'one' => 'some', 'two' => 'data', 'three' => 'here' } },
70
+ { rawtext: { 'one' => 'more', 'two' => 'data', 'three' => 'here' } }]
71
+
72
+ assert_equal expected_mapped_data, (mapped_rows.to_a.map { |_klass, fields| fields })
73
+ end
74
+ end
75
+
49
76
  test 'get_notifier' do
50
77
  class TestImporterWithoutNotifier
51
78
  include NdrImport::UniversalImporterHelper
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: 5.1.0
4
+ version: 6.0.0
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: 2018-08-15 00:00:00.000000000 Z
11
+ date: 2018-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -222,14 +222,20 @@ dependencies:
222
222
  requirements:
223
223
  - - "~>"
224
224
  - !ruby/object:Gem::Version
225
- version: '3.0'
225
+ version: '3.1'
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ version: 3.1.3
226
229
  type: :development
227
230
  prerelease: false
228
231
  version_requirements: !ruby/object:Gem::Requirement
229
232
  requirements:
230
233
  - - "~>"
231
234
  - !ruby/object:Gem::Version
232
- version: '3.0'
235
+ version: '3.1'
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: 3.1.3
233
239
  - !ruby/object:Gem::Dependency
234
240
  name: guard
235
241
  requirement: !ruby/object:Gem::Requirement
@@ -386,6 +392,7 @@ files:
386
392
  - test/resources/hello_world.pdf
387
393
  - test/resources/hello_world.txt
388
394
  - test/resources/high_ascii_delimited.txt
395
+ - test/resources/high_ascii_delimited_example_two.txt
389
396
  - test/resources/malformed.xml
390
397
  - test/resources/normal.csv
391
398
  - test/resources/normal.csv.zip
@@ -393,6 +400,7 @@ files:
393
400
  - test/resources/normal_thorn.csv
394
401
  - test/resources/not_a_pdf.pdf
395
402
  - test/resources/not_a_word_file.doc
403
+ - test/resources/not_sign_delimited.txt
396
404
  - test/resources/sample_xls.xls
397
405
  - test/resources/sample_xlsx.xlsx
398
406
  - test/resources/sheet_streaming.xls
@@ -471,6 +479,7 @@ test_files:
471
479
  - test/resources/hello_world.pdf
472
480
  - test/resources/hello_world.txt
473
481
  - test/resources/high_ascii_delimited.txt
482
+ - test/resources/high_ascii_delimited_example_two.txt
474
483
  - test/resources/malformed.xml
475
484
  - test/resources/normal.csv
476
485
  - test/resources/normal.csv.zip
@@ -478,6 +487,7 @@ test_files:
478
487
  - test/resources/normal_thorn.csv
479
488
  - test/resources/not_a_pdf.pdf
480
489
  - test/resources/not_a_word_file.doc
490
+ - test/resources/not_sign_delimited.txt
481
491
  - test/resources/sample_xls.xls
482
492
  - test/resources/sample_xlsx.xlsx
483
493
  - test/resources/sheet_streaming.xls