ndr_import 10.0 → 10.1

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: b98a9642fed703edb02ce4bc18d5c15869f1dd10d0e072866a84a0b6b9529141
4
- data.tar.gz: 8c4aa215b0e87ca31676a96c703789bfb93d22bf3fa32b44ee7169a4ccfa4607
3
+ metadata.gz: 16cdebb2e3a6809255d5d66971a2db6d5c954731f6def3c73fe0f89d8ea0b7e9
4
+ data.tar.gz: 575ba2c40ae01f99ebd48f75ff42c2cdf40871cbed87bfb2399de45d9f402e73
5
5
  SHA512:
6
- metadata.gz: da1b4ae10264ac9a5ff7d09832c979f81608c6e428052bbe1dc403f5d5cc0d9c1f44348b59d02be340cc48a277cf2bfe84f5fd80560f7ebc3b8379b529f65a4f
7
- data.tar.gz: b969c50b4aec9687571c53f1b49b6798ff65ef2c1d4edeb36ab535e8af59a2387fe8d4a5941ef9c1257686e59c990b30de69a1423779dd8bf77ccfc94bd04786
6
+ metadata.gz: 37e9bcfe3b8a5cab98bd68fc846eafd386595e0b6b79b9b4bf10ba8bc44a6d24ff998f5ab249964009bb0eebebfe0700bd6a39ddd0dfefc1260b529ff5543e63
7
+ data.tar.gz: c144108ad4d2f63c918e43ef540f30d49be26897d6c4d82bccda6128aaff5b408c3d93425612bedaef73f865292a3d2a408f0c792e35a9f548e50363804c8d10
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  ## [Unreleased]
2
- *no unreleased changes*
2
+ * no relevant changes
3
+
4
+ ## 10.1 / 2021-03-08
5
+ * Allow optional `last_data_column` in NdrImport::Table mappings (#61)
3
6
 
4
7
  ## 10.0 / 2021-02-22
5
8
  ### Changed
data/code_safety.yml CHANGED
@@ -26,8 +26,8 @@ file safety:
26
26
  safe_revision: b09e268ff9c8349b914aa1b7ba888e1d39f97e4a
27
27
  CHANGELOG.md:
28
28
  comments:
29
- reviewed_by: joshpencheon
30
- safe_revision: 8ba7aae5e4839bed03ddc6837dd657ef7720e8ce
29
+ reviewed_by: ollietulloch
30
+ safe_revision: 2d093cc57a699b527a7d0159e77b91f4409a6e0b
31
31
  CODE_OF_CONDUCT.md:
32
32
  comments:
33
33
  reviewed_by: timgentry
@@ -279,8 +279,8 @@ file safety:
279
279
  safe_revision: bb44ade56a2151706eede2c31142440ccf49e6f6
280
280
  lib/ndr_import/non_tabular/table.rb:
281
281
  comments:
282
- reviewed_by: josh.pencheon
283
- safe_revision: 71979e0a602ca5a0ce415c194f10add9959f0116
282
+ reviewed_by: ollietulloch
283
+ safe_revision: f9df064adcfd38f09d83ad8c5496c84188faed98
284
284
  lib/ndr_import/non_tabular_file_helper.rb:
285
285
  comments:
286
286
  reviewed_by: josh.pencheon
@@ -295,20 +295,20 @@ file safety:
295
295
  safe_revision: 3c7f827d17aacbf7b811eea67e27553f3b039070
296
296
  lib/ndr_import/table.rb:
297
297
  comments: uses File.basename
298
- reviewed_by: josh.pencheon
299
- safe_revision: a69d4a57ddcf13cdc13c27bd2eb91a395fa7ea36
298
+ reviewed_by: ollietulloch
299
+ safe_revision: 3cf7473181f7f835b3dfe7822f6833d751805eaf
300
300
  lib/ndr_import/universal_importer_helper.rb:
301
301
  comments:
302
302
  reviewed_by: ollietulloch
303
- safe_revision: ee2e74e4ceda4ff48cbda6872a6bdf0874212c21
303
+ safe_revision: 85869d99ae93252b7f3ef2d0a4db817c88d35c9e
304
304
  lib/ndr_import/unmapped_data_error.rb:
305
305
  comments:
306
306
  reviewed_by: josh.pencheon
307
307
  safe_revision: 5cd2cd0b3a1e254d30d4acc28c6731825a1f84f5
308
308
  lib/ndr_import/version.rb:
309
309
  comments: another check?
310
- reviewed_by: joshpencheon
311
- safe_revision: 8ba7aae5e4839bed03ddc6837dd657ef7720e8ce
310
+ reviewed_by: ollietulloch
311
+ safe_revision: 2d093cc57a699b527a7d0159e77b91f4409a6e0b
312
312
  lib/ndr_import/xml/table.rb:
313
313
  comments:
314
314
  reviewed_by: josh.pencheon
@@ -635,8 +635,8 @@ file safety:
635
635
  safe_revision: 3c7f827d17aacbf7b811eea67e27553f3b039070
636
636
  test/table_test.rb:
637
637
  comments:
638
- reviewed_by: josh.pencheon
639
- safe_revision: a69d4a57ddcf13cdc13c27bd2eb91a395fa7ea36
638
+ reviewed_by: ollietulloch
639
+ safe_revision: 3cf7473181f7f835b3dfe7822f6833d751805eaf
640
640
  test/test_helper.rb:
641
641
  comments:
642
642
  reviewed_by: josh.pencheon
@@ -644,7 +644,7 @@ file safety:
644
644
  test/universal_importer_helper_test.rb:
645
645
  comments:
646
646
  reviewed_by: ollietulloch
647
- safe_revision: 830de0f8cb139c5f61525652b424423935cfc7ac
647
+ safe_revision: 85869d99ae93252b7f3ef2d0a4db817c88d35c9e
648
648
  test/xml/table_test.rb:
649
649
  comments:
650
650
  reviewed_by: josh.pencheon
@@ -16,7 +16,7 @@ module NdrImport
16
16
 
17
17
  include UTF8Encoding
18
18
 
19
- TABULAR_ONLY_OPTIONS = %w[delimiter liberal_parsing tablename_pattern
19
+ TABULAR_ONLY_OPTIONS = %w[delimiter last_data_column liberal_parsing tablename_pattern
20
20
  header_lines footer_lines xml_record_xpath].freeze
21
21
 
22
22
  NON_TABULAR_OPTIONS = %w[capture_end_line capture_start_line start_line_pattern
@@ -10,8 +10,9 @@ module NdrImport
10
10
  include NdrImport::Mapper
11
11
 
12
12
  def self.all_valid_options
13
- %w[canonical_name delimiter liberal_parsing filename_pattern file_password tablename_pattern
14
- header_lines footer_lines format klass columns xml_record_xpath row_identifier]
13
+ %w[canonical_name delimiter liberal_parsing filename_pattern file_password last_data_column
14
+ tablename_pattern header_lines footer_lines format klass columns xml_record_xpath
15
+ row_identifier]
15
16
  end
16
17
 
17
18
  def all_valid_options
@@ -50,8 +51,9 @@ module NdrImport
50
51
  @header_best_guess = nil
51
52
  @notifier.try(:started)
52
53
 
54
+ last_col = last_column_to_transform
53
55
  skip_footer_lines(lines, footer_lines).each do |line|
54
- process_line(line, &block)
56
+ line.is_a?(Array) ? process_line(line[0..last_col], &block) : process_line(line, &block)
55
57
  end
56
58
 
57
59
  @notifier.try(:finished)
@@ -226,5 +228,26 @@ module NdrImport
226
228
  def column_names(column_mappings)
227
229
  column_mappings.map { |c| (c['column'] || c['standard_mapping']).downcase }
228
230
  end
231
+
232
+ # If specified in the mapping, stop transforming data at a given index (column)
233
+ def last_column_to_transform
234
+ return -1 if last_data_column.nil?
235
+ return last_data_column - 1 if last_data_column.is_a?(Integer)
236
+
237
+ error = "Unknown 'last_data_column' format: #{last_data_column} " \
238
+ "(#{last_data_column.class})"
239
+ raise error unless last_data_column.is_a?(String) && last_data_column =~ /\A[A-Z]+\z/i
240
+
241
+ # If it's an excel column label (eg 'K', 'AF', 'DDE'), convert it to an index
242
+ index_from_column_label
243
+ end
244
+
245
+ def index_from_column_label
246
+ alphabet_index_hash = ('A'..'Z').map.with_index.to_h
247
+ index = last_data_column.upcase.chars.inject(0) do |char_index, char|
248
+ (char_index * 26) + (alphabet_index_hash[char] + 1)
249
+ end
250
+ index - 1
251
+ end
229
252
  end # class Table
230
253
  end
@@ -48,9 +48,7 @@ module NdrImport
48
48
  def extract(source_file, &block)
49
49
  return enum_for(:extract, source_file) unless block
50
50
 
51
- files = NdrImport::File::Registry.files(source_file,
52
- 'unzip_path' => unzip_path)
53
- files.each do |filename|
51
+ NdrImport::File::Registry.files(source_file, 'unzip_path' => unzip_path).each do |filename|
54
52
  # now at the individual file level, can we find the table mapping?
55
53
  table_mapping = get_table_mapping(filename, nil)
56
54
 
@@ -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 = '10.0'
4
+ VERSION = '10.1'
5
5
  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: '10.0'
4
+ version: '10.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - NCRS Development Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-22 00:00:00.000000000 Z
11
+ date: 2021-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel