ndr_import 10.0 → 10.1

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