ndr_import 5.0.0 → 5.1.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
- SHA256:
3
- metadata.gz: c3697b01f732fdef03d66858b9f699b0c95673824332a1d4f2d8fa2b845aed24
4
- data.tar.gz: 87bb849993db749b7b9a58d2a47be6b1f4ecd5a928f9541f97529452836f7fb1
2
+ SHA1:
3
+ metadata.gz: 411899f19141a2e2da38b712d76d4de02b00bda7
4
+ data.tar.gz: 9feaaf50a3bb840974a0ce38ef66fee5ab32c19e
5
5
  SHA512:
6
- metadata.gz: 445825462bf049b2d8ebacd391695176302924e8b12a5e08c283e9b5ed32bb9600befa48c6777ed038f8a2f6c257604d3c86b899b795fd8d13e7980f85b7911f
7
- data.tar.gz: a9c796eb0f8d1914df8fc1dc5c943c49ab7de68f7f109e2e917637a88262d334ef1e1a47f5f23571a910e51664109851f4748988c0b8592cf3c376f8d8c5b0cd
6
+ metadata.gz: 4d10e6a1d6370dd513364cf6332daf14ab6fe75e9b320906fa6a93e4e08422e54ebe16755bfbbd966e05c130bf53eab329e84ef2b5e766acd600e7059fd939f6
7
+ data.tar.gz: c824e74a89cfe9c9ded3f4a95b42f1be7bc31ae475b503264aa10e14621223691eb936dcd550792592ce7104c6eb278f7cb43059dacba916a26fc0f9ce4b8f6c
data/code_safety.yml CHANGED
@@ -58,8 +58,8 @@ file safety:
58
58
  safe_revision: c158dc783b84cab31380708e76e3812544cc1c2f
59
59
  lib/ndr_import.rb:
60
60
  comments:
61
- reviewed_by: timgentry
62
- safe_revision: a8451809db86e0e023b0d93826114a33ff896c4f
61
+ reviewed_by: ollie.tulloch
62
+ safe_revision: dfc958d44b6c58355445fa395db08a62213ee709
63
63
  lib/ndr_import/csv_library.rb:
64
64
  comments:
65
65
  reviewed_by: josh.pencheon
@@ -100,6 +100,10 @@ file safety:
100
100
  comments:
101
101
  reviewed_by: timgentry
102
102
  safe_revision: c88000b32401b5ae9ef7f5878a9b630506ab5a94
103
+ lib/ndr_import/fixed_width/table.rb:
104
+ comments:
105
+ reviewed_by: ollie.tulloch
106
+ safe_revision: dfc958d44b6c58355445fa395db08a62213ee709
103
107
  lib/ndr_import/helpers/file/delimited.rb:
104
108
  comments:
105
109
  reviewed_by: josh.pencheon
@@ -170,12 +174,12 @@ file safety:
170
174
  safe_revision: 36143ff4f48e0433a7b04b63143ef6d6d2481fec
171
175
  lib/ndr_import/version.rb:
172
176
  comments: another check?
173
- reviewed_by: josh.pencheon
174
- safe_revision: 1df87077495c1f595023bdbbd1e0bfb220dc5da5
177
+ reviewed_by: ollie.tulloch
178
+ safe_revision: fa21aae027f436337eb0de481e390cdbab348123
175
179
  ndr_import.gemspec:
176
180
  comments:
177
- reviewed_by: josh.pencheon
178
- safe_revision: b3f39d7243c41a44594336c3feed3b29c2386a0e
181
+ reviewed_by: ollie.tulloch
182
+ safe_revision: a76d7fd03894158417411d0c9620ea4c1d5a03d6
179
183
  test/file/base_test.rb:
180
184
  comments:
181
185
  reviewed_by: timgentry
@@ -208,6 +212,10 @@ file safety:
208
212
  comments:
209
213
  reviewed_by: timgentry
210
214
  safe_revision: c88000b32401b5ae9ef7f5878a9b630506ab5a94
215
+ test/fixed_width/table_test.rb:
216
+ comments:
217
+ reviewed_by: ollie.tulloch
218
+ safe_revision: dfc958d44b6c58355445fa395db08a62213ee709
211
219
  test/helpers/file/delimited_test.rb:
212
220
  comments:
213
221
  reviewed_by: joshpencheon
data/lib/ndr_import.rb CHANGED
@@ -5,6 +5,7 @@ require 'ndr_import/mapper'
5
5
  require 'ndr_import/non_tabular_file_helper'
6
6
  require 'ndr_import/table'
7
7
  require 'ndr_import/non_tabular/table'
8
+ require 'ndr_import/fixed_width/table'
8
9
 
9
10
  module NdrImport
10
11
  def self.root
@@ -0,0 +1,25 @@
1
+ require 'ndr_import/table'
2
+
3
+ module NdrImport
4
+ module FixedWidth
5
+ # This class maintains the state of a fixed width table mapping and encapsulates
6
+ # the logic required to transform a table of data into "records". Particular
7
+ # attention has been made to use enumerables throughout to help with the
8
+ # transformation of large quantities of data.
9
+ class Table < ::NdrImport::Table
10
+ # This method transforms an incoming line of fixed wwidrh data by applying
11
+ # each of the klass masked mappings to the line and yielding the klass
12
+ # and fields for each mapped klass.
13
+ def transform_line(line, index)
14
+ return enum_for(:transform_line, line, index) unless block_given?
15
+
16
+ masked_mappings.each do |klass, klass_mappings|
17
+ line = fixed_width_columns(line, klass_mappings)
18
+ fields = mapped_line(line, klass_mappings)
19
+ next if fields[:skip].to_s == 'true'.freeze
20
+ yield(klass, fields, index)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ 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.0.0'.freeze
4
+ VERSION = '5.1.0'.freeze
5
5
  end
data/ndr_import.gemspec CHANGED
@@ -15,6 +15,8 @@ Gem::Specification.new do |spec|
15
15
 
16
16
  # Exclude older versions of this gem from the package.
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |s| s =~ %r{^pkg/} }
18
+ # SECURE BNS 2018-08-06: Minimise sharing of (public-key encrypted) slack secrets in .travis.yml
19
+ spec.files -= %w[.travis.yml] # Not needed in the gem
18
20
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
21
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
22
  spec.require_paths = ['lib']
@@ -0,0 +1,35 @@
1
+ require 'test_helper'
2
+
3
+ # This tests the NdrImport::FixedWidth::Table mapping class
4
+ module FixedWidth
5
+ class TableTest < ActiveSupport::TestCase
6
+ def test_transform_fixed_width_line
7
+ table = NdrImport::FixedWidth::Table.new(header_lines: 2,
8
+ footer_lines: 1,
9
+ klass: 'SomeTestKlass',
10
+ columns: fixed_width_column_mapping)
11
+
12
+ enum = table.transform_line('123 abcdexyz', 2)
13
+ assert_instance_of Enumerator, enum
14
+ output = []
15
+ enum.each do |klass, fields, index|
16
+ output << [klass, fields, index]
17
+ end
18
+
19
+ expected_output = [
20
+ ['SomeTestKlass', { rawtext: { 'one' => '123 ', 'two' => 'abcde', 'three' => 'xyz' } }, 2]
21
+ ]
22
+ assert_equal expected_output.sort, output.sort
23
+ end
24
+
25
+ private
26
+
27
+ def fixed_width_column_mapping
28
+ [
29
+ { 'column' => 'one', 'unpack_pattern' => 'a5' },
30
+ { 'column' => 'two', 'unpack_pattern' => 'a5' },
31
+ { 'column' => 'three', 'unpack_pattern' => 'a3' }
32
+ ]
33
+ end
34
+ end
35
+ end
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.0.0
4
+ version: 5.1.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-06-05 00:00:00.000000000 Z
11
+ date: 2018-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -309,7 +309,6 @@ files:
309
309
  - ".gitignore"
310
310
  - ".hound.yml"
311
311
  - ".rubocop.yml"
312
- - ".travis.yml"
313
312
  - CODE_OF_CONDUCT.md
314
313
  - Gemfile
315
314
  - Guardfile
@@ -332,6 +331,7 @@ files:
332
331
  - lib/ndr_import/file/text.rb
333
332
  - lib/ndr_import/file/word.rb
334
333
  - lib/ndr_import/file/zip.rb
334
+ - lib/ndr_import/fixed_width/table.rb
335
335
  - lib/ndr_import/helpers/file/delimited.rb
336
336
  - lib/ndr_import/helpers/file/excel.rb
337
337
  - lib/ndr_import/helpers/file/pdf.rb
@@ -359,6 +359,7 @@ files:
359
359
  - test/file/text_test.rb
360
360
  - test/file/word_test.rb
361
361
  - test/file/zip_test.rb
362
+ - test/fixed_width/table_test.rb
362
363
  - test/helpers/file/delimited_test.rb
363
364
  - test/helpers/file/excel_test.rb
364
365
  - test/helpers/file/pdf_test.rb
@@ -430,7 +431,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
430
431
  version: '0'
431
432
  requirements: []
432
433
  rubyforge_project:
433
- rubygems_version: 2.7.6
434
+ rubygems_version: 2.5.2.3
434
435
  signing_key:
435
436
  specification_version: 4
436
437
  summary: NDR Import
@@ -443,6 +444,7 @@ test_files:
443
444
  - test/file/text_test.rb
444
445
  - test/file/word_test.rb
445
446
  - test/file/zip_test.rb
447
+ - test/fixed_width/table_test.rb
446
448
  - test/helpers/file/delimited_test.rb
447
449
  - test/helpers/file/excel_test.rb
448
450
  - test/helpers/file/pdf_test.rb
data/.travis.yml DELETED
@@ -1,21 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.3
4
- - 2.4
5
- - 2.5
6
- gemfile:
7
- - gemfiles/Gemfile.rails42
8
- - gemfiles/Gemfile.rails50
9
- - gemfiles/Gemfile.rails51
10
- - gemfiles/Gemfile.rails52
11
- sudo: false
12
- cache: bundler
13
- before_script: bundle update
14
- script: bundle exec rake test
15
- notifications:
16
- slack:
17
- on_pull_requests: false
18
- on_success: always
19
- on_failure: always
20
- rooms:
21
- secure: NMd9N/jNbECT/fCUBxPDKy4IMpUnRdMhobwa+9kDRaWYbRAwIkHLd8sI1l63qx7O03SlDpsHLLckjayMKS35gO/wRmgC7T8k9ppW75Xs5D4jR/j3FdTFawnXF+wVx0ddQrpH0K8oftPX1euPEllIh7+bJUYct/Siv0UX5eP+qyHT0gKtbDlI2CMKOcOHE8Q/zwjx0mLVSj/0U+HRx5+sMEDcwPupzhCYLdIAtenHsZ2Zmo2uSqOzK9Ruf3UsIh3gVSKXWGvXQzG8bIxogIJbEbwIk/gQyMr7UXwgNzhltPz1CqOrrTmSonrd3HbLVajJvDWPMBPGDZrUyipiW/MOUKpXgd8CsL46o4icYIZIAYEWLsn/AJkrA+UQZ8S5poR06jNH8xrI0eUQsu6maWhJ/rPfzwb6x2hCCyk2iQsGtO+SPCUrWnT1T3ir8H0HStD+AZ4/yz4cdWlClchko2ZfqS0q3Yv5jF3K4iVOF4GOUo01Ft+LDU3sPC7Ngq51bejoaLTzexiOfEaF0kKvB8XNXYYjV5ATNJ8XWQR7ISJ+na4FCwt4KaKtC864TWWDTxaz6lfr0B3Wf0lZLH22+BhpzrfPWFo3YGyMsOcgPU0rPHrtAzks55rqCTQEOaKTw4rfEmuMEFJK/y80GYS2jTPu0nCnJo4NdV1fVuSSD8iUFAM=