ndr_import 8.1.0 → 8.2.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
  SHA256:
3
- metadata.gz: 214f73452462c2ea7182deaa8c90e4818d8ab6caf3fd604af4a64833e2518b41
4
- data.tar.gz: 5d15e20e7b0c13fa3d3cd9169ad70c9028cc64d688906dd965a09ce791e97022
3
+ metadata.gz: f530e3c2d2fecb22289a673a1219b4d1830493c4d2417728f1ce6116f7f1b953
4
+ data.tar.gz: 3208097b9fb246fc10b514ddc9fa21107b1de94bc7eefcb0ea884cc2b5d88616
5
5
  SHA512:
6
- metadata.gz: 7d4080dc6d86e553f8f6a07d2fe4876c6d014ecc8b5b3e729ac089147223ecf2d18f9f9bddfbc64c692e73deb08e27a12e09793fbd155c2a859b29c7efff7c3b
7
- data.tar.gz: 46b267832414e13f1580da5fc386bebe34c5debb79d03e288c3f793b6c28158e362eb3971d2f275f68c398a4f8e3293321a585df2be2595369197bb70bf32eef
6
+ metadata.gz: ede70472e72bc8edda889ce03483706be25a8d5f3d1a3f05ea3863de0085e3df7bea6f6da9307daa7011dbee655d7caf6f6f36bd680e4f84f437f54e63792ac8
7
+ data.tar.gz: '089787a8761ed13581726c43d4a805c598bff04ad1564c3b0ff997c1f9dfc620a6487b88a432a16db39b287fbe84b3e6de59de84aa61787413b7ebc8fe67bea2'
@@ -1,6 +1,10 @@
1
1
  ## [Unreleased]
2
2
  *no unreleased changes*
3
3
 
4
+ ## 8.2.0 / 2019-02-25
5
+ ### Added
6
+ * Support automatically generating a per row identifier with `row_identifier` (#34)
7
+
4
8
  ## 8.1.0 / 2019-01-08
5
9
  ### Added
6
10
  * Support `liberal_parsing` when using the delimited helper
@@ -19,7 +19,7 @@ file safety:
19
19
  CHANGELOG.md:
20
20
  comments:
21
21
  reviewed_by: josh.pencheon
22
- safe_revision: 5ca2f7e9cb0e79134e5fa54ca2316c584696b34a
22
+ safe_revision: 640464d804e8eca15db14b8dfeb8c1ffa7d0fa85
23
23
  CODE_OF_CONDUCT.md:
24
24
  comments:
25
25
  reviewed_by: timgentry
@@ -187,7 +187,7 @@ file safety:
187
187
  lib/ndr_import/table.rb:
188
188
  comments: uses File.basename
189
189
  reviewed_by: josh.pencheon
190
- safe_revision: 2baccd482bcd875dc273f6a34a0e28823790e8d5
190
+ safe_revision: fac9e62618a32fab7a09a4996d27e1e7437b7dfb
191
191
  lib/ndr_import/universal_importer_helper.rb:
192
192
  comments:
193
193
  reviewed_by: josh.pencheon
@@ -195,7 +195,7 @@ file safety:
195
195
  lib/ndr_import/version.rb:
196
196
  comments: another check?
197
197
  reviewed_by: josh.pencheon
198
- safe_revision: 5ca2f7e9cb0e79134e5fa54ca2316c584696b34a
198
+ safe_revision: 640464d804e8eca15db14b8dfeb8c1ffa7d0fa85
199
199
  lib/ndr_import/xml/table.rb:
200
200
  comments:
201
201
  reviewed_by: josh.pencheon
@@ -287,7 +287,7 @@ file safety:
287
287
  test/non_tabular/table_test.rb:
288
288
  comments:
289
289
  reviewed_by: josh.pencheon
290
- safe_revision: f216687d0bba7f2940f74a3353a32be3c900c194
290
+ safe_revision: fac9e62618a32fab7a09a4996d27e1e7437b7dfb
291
291
  test/non_tabular_file_helper_test.rb:
292
292
  comments:
293
293
  reviewed_by: timgentry
@@ -479,7 +479,7 @@ file safety:
479
479
  test/table_test.rb:
480
480
  comments:
481
481
  reviewed_by: josh.pencheon
482
- safe_revision: 2baccd482bcd875dc273f6a34a0e28823790e8d5
482
+ safe_revision: fac9e62618a32fab7a09a4996d27e1e7437b7dfb
483
483
  test/test_helper.rb:
484
484
  comments:
485
485
  reviewed_by: josh.pencheon
@@ -11,7 +11,7 @@ module NdrImport
11
11
 
12
12
  def self.all_valid_options
13
13
  %w[canonical_name delimiter liberal_parsing filename_pattern tablename_pattern header_lines
14
- footer_lines format klass columns xml_record_xpath]
14
+ footer_lines format klass columns xml_record_xpath row_identifier]
15
15
  end
16
16
 
17
17
  def all_valid_options
@@ -81,8 +81,16 @@ module NdrImport
81
81
  def transform_line(line, index)
82
82
  return enum_for(:transform_line, line, index) unless block_given?
83
83
 
84
+ identifier = case @row_identifier.to_s
85
+ when 'index'
86
+ index
87
+ when 'uuid'
88
+ SecureRandom.uuid
89
+ end
90
+
84
91
  masked_mappings.each do |klass, klass_mappings|
85
92
  fields = mapped_line(line, klass_mappings)
93
+ fields['row_identifier'] = identifier unless identifier.nil?
86
94
  next if fields[:skip].to_s == 'true'
87
95
  yield(klass, fields, index)
88
96
  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 = '8.1.0'.freeze
4
+ VERSION = '8.2.0'.freeze
5
5
  end
@@ -49,7 +49,7 @@ STR
49
49
  def test_all_valid_options
50
50
  valid_options = %w[
51
51
  canonical_name capture_end_line capture_start_line columns end_in_a_record end_line_pattern
52
- filename_pattern format klass remove_lines start_in_a_record start_line_pattern
52
+ filename_pattern format klass remove_lines row_identifier start_in_a_record start_line_pattern
53
53
  ]
54
54
  assert_equal valid_options.sort,
55
55
  NdrImport::NonTabular::Table.all_valid_options.sort
@@ -140,6 +140,42 @@ class TableTest < ActiveSupport::TestCase
140
140
  assert_equal expected_output.sort, output.sort
141
141
  end
142
142
 
143
+ def test_transform_line_row_identifier_index
144
+ table = NdrImport::Table.new(:header_lines => 2, :footer_lines => 1, :row_identifier => :index,
145
+ :columns => column_level_klass_mapping)
146
+ enum = table.transform_line(%w(CARROT POTATO PEA), 7)
147
+ assert_instance_of Enumerator, enum
148
+
149
+ output = []
150
+ enum.each do |klass, fields, index|
151
+ output << [klass, fields, index]
152
+ end
153
+
154
+ expected_output = [
155
+ ['SomeTestKlass', { :rawtext => { 'one' => 'CARROT', 'two' => 'POTATO' }, 'row_identifier' => 7 }, 7],
156
+ ['SomeOtherKlass', { :rawtext => { 'two' => 'POTATO', 'three' => 'PEA' }, 'row_identifier' => 7 }, 7]
157
+ ]
158
+ assert_equal expected_output.sort, output.sort
159
+ end
160
+
161
+ def test_transform_line_row_identifier_uuid
162
+ table = NdrImport::Table.new(:header_lines => 2, :footer_lines => 1, :row_identifier => :uuid,
163
+ :columns => column_level_klass_mapping)
164
+ enum = table.transform_line(%w(CARROT POTATO PEA), 7)
165
+ assert_instance_of Enumerator, enum
166
+
167
+ output = []
168
+ enum.each do |klass, fields, _index|
169
+ output << [klass, fields['row_identifier']]
170
+ end
171
+ identifiers = output.map(&:last)
172
+
173
+ assert_equal 2, identifiers.count
174
+ assert_equal 2, identifiers.compact.count
175
+ assert_equal 1, identifiers.uniq.count
176
+ assert_equal 36, identifiers.first.length
177
+ end
178
+
143
179
  def test_encode_with
144
180
  table = NdrImport::Table.new
145
181
  assert table.instance_variables.include?(:@row_index)
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: 8.1.0
4
+ version: 8.2.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: 2019-01-08 00:00:00.000000000 Z
11
+ date: 2019-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -490,7 +490,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
490
490
  - !ruby/object:Gem::Version
491
491
  version: '0'
492
492
  requirements: []
493
- rubygems_version: 3.0.1
493
+ rubygems_version: 3.0.2
494
494
  signing_key:
495
495
  specification_version: 4
496
496
  summary: NDR Import