ndr_import 8.1.0 → 8.2.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
  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