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 +4 -4
- data/CHANGELOG.md +4 -1
- data/code_safety.yml +12 -12
- data/lib/ndr_import/non_tabular/table.rb +1 -1
- data/lib/ndr_import/table.rb +26 -3
- data/lib/ndr_import/universal_importer_helper.rb +1 -3
- data/lib/ndr_import/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16cdebb2e3a6809255d5d66971a2db6d5c954731f6def3c73fe0f89d8ea0b7e9
|
4
|
+
data.tar.gz: 575ba2c40ae01f99ebd48f75ff42c2cdf40871cbed87bfb2399de45d9f402e73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37e9bcfe3b8a5cab98bd68fc846eafd386595e0b6b79b9b4bf10ba8bc44a6d24ff998f5ab249964009bb0eebebfe0700bd6a39ddd0dfefc1260b529ff5543e63
|
7
|
+
data.tar.gz: c144108ad4d2f63c918e43ef540f30d49be26897d6c4d82bccda6128aaff5b408c3d93425612bedaef73f865292a3d2a408f0c792e35a9f548e50363804c8d10
|
data/CHANGELOG.md
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:
|
30
|
-
safe_revision:
|
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:
|
283
|
-
safe_revision:
|
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:
|
299
|
-
safe_revision:
|
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:
|
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:
|
311
|
-
safe_revision:
|
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:
|
639
|
-
safe_revision:
|
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:
|
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
|
data/lib/ndr_import/table.rb
CHANGED
@@ -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
|
14
|
-
header_lines footer_lines format klass columns xml_record_xpath
|
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
|
-
|
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
|
|
data/lib/ndr_import/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2021-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|