ndr_import 5.1.0 → 6.0.0

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