ndr_import 3.1.6 → 4.0.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 +4 -4
- data/code_safety.yml +14 -14
- data/lib/ndr_import/file/delimited.rb +1 -1
- data/lib/ndr_import/file/excel.rb +7 -17
- data/lib/ndr_import/helpers/file/delimited.rb +1 -15
- data/lib/ndr_import/helpers/file/excel.rb +0 -28
- data/lib/ndr_import/mapper.rb +50 -65
- data/lib/ndr_import/version.rb +1 -1
- data/test/helpers/file/delimited_test.rb +0 -23
- data/test/helpers/file/excel_test.rb +0 -22
- data/test/test_helper.rb +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee9c5c86bbcd00af6877225040d6beb01007575d
|
4
|
+
data.tar.gz: 7dabb1d68c3467314e90f916f7ccb573be33ea1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9a13b367b3b094c041221b989456af8dfa1571395fd0b4ba11e1fcae10d830ea6b50b89a8f59f7bd72bc49209419c3f9bfbbfe86f9c0b47cbdf600b5e754508
|
7
|
+
data.tar.gz: a8da74311916a789f8203407fc1bfd7db5540940efdf28a1d96b615fa8f52321f7c541596d82a69f8ee704ad50863bf547ec812a86d138d82dfda59d79ba3b9d
|
data/code_safety.yml
CHANGED
@@ -70,12 +70,12 @@ file safety:
|
|
70
70
|
safe_revision: a8451809db86e0e023b0d93826114a33ff896c4f
|
71
71
|
lib/ndr_import/file/delimited.rb:
|
72
72
|
comments:
|
73
|
-
reviewed_by:
|
74
|
-
safe_revision:
|
73
|
+
reviewed_by: joshpencheon
|
74
|
+
safe_revision: 4f7588ef0246bfced14f42b247436507568422a2
|
75
75
|
lib/ndr_import/file/excel.rb:
|
76
76
|
comments:
|
77
77
|
reviewed_by: joshpencheon
|
78
|
-
safe_revision:
|
78
|
+
safe_revision: e108b1635e41e89e4cba816d47514dcd9d0d6433
|
79
79
|
lib/ndr_import/file/pdf.rb:
|
80
80
|
comments:
|
81
81
|
reviewed_by: timgentry
|
@@ -98,12 +98,12 @@ file safety:
|
|
98
98
|
safe_revision: c88000b32401b5ae9ef7f5878a9b630506ab5a94
|
99
99
|
lib/ndr_import/helpers/file/delimited.rb:
|
100
100
|
comments:
|
101
|
-
reviewed_by:
|
102
|
-
safe_revision:
|
101
|
+
reviewed_by: joshpencheon
|
102
|
+
safe_revision: 06fd16643d02957ce856728e4911143c8e0178dc
|
103
103
|
lib/ndr_import/helpers/file/excel.rb:
|
104
104
|
comments:
|
105
105
|
reviewed_by: joshpencheon
|
106
|
-
safe_revision:
|
106
|
+
safe_revision: 06fd16643d02957ce856728e4911143c8e0178dc
|
107
107
|
lib/ndr_import/helpers/file/pdf.rb:
|
108
108
|
comments:
|
109
109
|
reviewed_by: timgentry
|
@@ -122,8 +122,8 @@ file safety:
|
|
122
122
|
safe_revision: 6c6f204fab2f4232d81cb76aa523c26b0c490ae7
|
123
123
|
lib/ndr_import/mapper.rb:
|
124
124
|
comments:
|
125
|
-
reviewed_by:
|
126
|
-
safe_revision:
|
125
|
+
reviewed_by: joshpencheon
|
126
|
+
safe_revision: 582ce42b27ce3813efa7f93e09928e8f228ba6df
|
127
127
|
lib/ndr_import/mapping_error.rb:
|
128
128
|
comments:
|
129
129
|
reviewed_by: timgentry
|
@@ -163,7 +163,7 @@ file safety:
|
|
163
163
|
lib/ndr_import/version.rb:
|
164
164
|
comments: another check?
|
165
165
|
reviewed_by: joshpencheon
|
166
|
-
safe_revision:
|
166
|
+
safe_revision: 04a29ed03b6772091d7208403f0acc5032117149
|
167
167
|
ndr_import.gemspec:
|
168
168
|
comments:
|
169
169
|
reviewed_by: josh.pencheon
|
@@ -202,12 +202,12 @@ file safety:
|
|
202
202
|
safe_revision: c88000b32401b5ae9ef7f5878a9b630506ab5a94
|
203
203
|
test/helpers/file/delimited_test.rb:
|
204
204
|
comments:
|
205
|
-
reviewed_by:
|
206
|
-
safe_revision:
|
205
|
+
reviewed_by: joshpencheon
|
206
|
+
safe_revision: 377c060bd1e012d6e162a4ab8923a3609aacdf57
|
207
207
|
test/helpers/file/excel_test.rb:
|
208
208
|
comments:
|
209
209
|
reviewed_by: joshpencheon
|
210
|
-
safe_revision:
|
210
|
+
safe_revision: 377c060bd1e012d6e162a4ab8923a3609aacdf57
|
211
211
|
test/helpers/file/pdf_test.rb:
|
212
212
|
comments:
|
213
213
|
reviewed_by: timgentry
|
@@ -398,5 +398,5 @@ file safety:
|
|
398
398
|
safe_revision: 6bb588c17d33a604c96c648c6eebfe2d063dfbc0
|
399
399
|
test/test_helper.rb:
|
400
400
|
comments:
|
401
|
-
reviewed_by:
|
402
|
-
safe_revision:
|
401
|
+
reviewed_by: joshpencheon
|
402
|
+
safe_revision: 646c08329cba0ba8ea2c37226cf26434da29c747
|
@@ -32,7 +32,7 @@ module NdrImport
|
|
32
32
|
# By now, we know `encodings` should let us read the whole
|
33
33
|
# file succesfully; if there are problems, we should crash.
|
34
34
|
CSVLibrary.foreach(safe_path, encodings) do |line|
|
35
|
-
yield line.map(&:to_s)
|
35
|
+
yield line.map(&:to_s)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -64,12 +64,12 @@ module NdrImport
|
|
64
64
|
def xls_rows(workbook, sheet_name)
|
65
65
|
return enum_for(:xls_rows, workbook, sheet_name) unless block_given?
|
66
66
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
yield columns.map { |col| cast_excel_value(workbook.cell(row, col)) }
|
67
|
+
return unless workbook.first_row(sheet_name)
|
68
|
+
rows = workbook.first_row(sheet_name)..workbook.last_row(sheet_name)
|
69
|
+
columns = workbook.first_column(sheet_name)..workbook.last_column(sheet_name)
|
70
|
+
|
71
|
+
rows.each do |row|
|
72
|
+
yield columns.map { |col| cast_excel_value(workbook.cell(row, col, sheet_name)) }
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
@@ -78,9 +78,7 @@ module NdrImport
|
|
78
78
|
def xlsx_rows(workbook, sheet_name)
|
79
79
|
return enum_for(:xlsx_rows, workbook, sheet_name) unless block_given?
|
80
80
|
|
81
|
-
|
82
|
-
|
83
|
-
workbook.each_row_streaming(:pad_cells => true) do |row|
|
81
|
+
workbook.each_row_streaming(sheet: sheet_name, pad_cells: true) do |row|
|
84
82
|
yield row.map { |cell| cast_excel_value(cell.value) }
|
85
83
|
end
|
86
84
|
end
|
@@ -126,14 +124,6 @@ module NdrImport
|
|
126
124
|
FileUtils.mkdir_p(SafeFile.safepath_to_string(SafeFile.dirname(dest)))
|
127
125
|
FileUtils.cp(SafeFile.safepath_to_string(source), SafeFile.safepath_to_string(dest))
|
128
126
|
end
|
129
|
-
|
130
|
-
# Sets `sheet_name' to be the default (i.e. active) sheet in `workbook'.
|
131
|
-
# This setting applies to the Roo object, so needs to re-applied if (for example)
|
132
|
-
# streaming rows from multiple sheets simultaneously - something that was problematic
|
133
|
-
# with Workbook#each_with_pagename.
|
134
|
-
def activate_sheet!(workbook, sheet_name)
|
135
|
-
workbook.sheet(sheet_name)
|
136
|
-
end
|
137
127
|
end
|
138
128
|
|
139
129
|
Registry.register(Excel, 'xls', 'xlsx')
|
@@ -27,13 +27,6 @@ module NdrImport
|
|
27
27
|
yield nil, delimited_rows(path, col_sep)
|
28
28
|
end
|
29
29
|
|
30
|
-
# Deprecated method
|
31
|
-
def each_delimited_table(path, col_sep = nil, &block)
|
32
|
-
Kernel.warn '[warning] each_delimited_table will be deprecated,' \
|
33
|
-
' please use delimited_tables instead.'
|
34
|
-
delimited_tables(path, col_sep, &block)
|
35
|
-
end
|
36
|
-
|
37
30
|
# Iterate through the file line by line, yielding each one in turn.
|
38
31
|
def delimited_rows(path, col_sep = nil)
|
39
32
|
return enum_for(:delimited_rows, path, col_sep) unless block_given?
|
@@ -44,17 +37,10 @@ module NdrImport
|
|
44
37
|
# By now, we know `encodings` should let us read the whole
|
45
38
|
# file succesfully; if there are problems, we should crash.
|
46
39
|
CSVLibrary.foreach(safe_path, encodings) do |line|
|
47
|
-
yield line.map(&:to_s)
|
40
|
+
yield line.map(&:to_s)
|
48
41
|
end
|
49
42
|
end
|
50
43
|
|
51
|
-
# Deprecated method
|
52
|
-
def each_delimited_row(path, col_sep = nil, &block)
|
53
|
-
Kernel.warn '[warning] each_delimited_row will be deprecated,' \
|
54
|
-
' please use delimited_rows instead.'
|
55
|
-
delimited_rows(path, col_sep, &block)
|
56
|
-
end
|
57
|
-
|
58
44
|
private
|
59
45
|
|
60
46
|
# Derive the source encoding by trying all supported encodings.
|
@@ -45,13 +45,6 @@ module NdrImport
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
# Deprecated method
|
49
|
-
def each_excel_table(path, &block)
|
50
|
-
Kernel.warn '[warning] each_excel_table will be deprecated,' \
|
51
|
-
' please use excel_tables instead.'
|
52
|
-
excel_tables(path, &block)
|
53
|
-
end
|
54
|
-
|
55
48
|
private
|
56
49
|
|
57
50
|
def read_excel_file(path, selected_sheet = nil)
|
@@ -85,13 +78,6 @@ module NdrImport
|
|
85
78
|
end
|
86
79
|
end
|
87
80
|
|
88
|
-
# Deprecated method
|
89
|
-
def each_excel_row(workbook, sheet, &block)
|
90
|
-
Kernel.warn '[warning] each_excel_row will be deprecated,' \
|
91
|
-
' please use excel_rows instead.'
|
92
|
-
excel_rows(workbook, sheet, &block)
|
93
|
-
end
|
94
|
-
|
95
81
|
# Iterate through an xls sheet line by line, yielding each one in turn.
|
96
82
|
def xls_rows(sheet)
|
97
83
|
return enum_for(:xls_rows, sheet) unless block_given?
|
@@ -106,13 +92,6 @@ module NdrImport
|
|
106
92
|
end
|
107
93
|
end
|
108
94
|
|
109
|
-
# Deprecated method
|
110
|
-
def each_xls_row(sheet, &block)
|
111
|
-
Kernel.warn '[warning] each_xls_row will be deprecated,' \
|
112
|
-
' please use xls_rows instead.'
|
113
|
-
xls_rows(sheet, &block)
|
114
|
-
end
|
115
|
-
|
116
95
|
# Iterate through an xlsx sheet line by line, yielding each one in turn.
|
117
96
|
# This method uses streaming https://github.com/roo-rb/roo#excel-xlsx-and-xlsm-support
|
118
97
|
def xlsx_rows(sheet)
|
@@ -123,13 +102,6 @@ module NdrImport
|
|
123
102
|
end
|
124
103
|
end
|
125
104
|
|
126
|
-
# Deprecated method
|
127
|
-
def each_xlsx_row(sheet, &block)
|
128
|
-
Kernel.warn '[warning] each_xlsx_row will be deprecated,' \
|
129
|
-
' please use xlsx_rows instead.'
|
130
|
-
xlsx_rows(sheet, &block)
|
131
|
-
end
|
132
|
-
|
133
105
|
def get_excel_sheets_name(path)
|
134
106
|
workbook = load_workbook(path)
|
135
107
|
workbook.sheets
|
data/lib/ndr_import/mapper.rb
CHANGED
@@ -21,40 +21,37 @@ module NdrImport::Mapper
|
|
21
21
|
|
22
22
|
[field_mapping['replace']].flatten.each do |field_replacement|
|
23
23
|
field_replacement.each do |pattern, replacement|
|
24
|
-
|
25
|
-
original_value.map { |val| val.gsub!(pattern, replacement) }
|
26
|
-
else
|
27
|
-
original_value.gsub!(pattern, replacement)
|
28
|
-
end
|
24
|
+
Array(original_value).each { |val| val.gsub!(pattern, replacement) }
|
29
25
|
end
|
30
26
|
end
|
31
27
|
end
|
32
28
|
|
33
29
|
# Returns the standard_mapping hash specified
|
34
|
-
# Assumes
|
30
|
+
# Assumes mapping exists
|
35
31
|
def standard_mapping(mapping_name, column_mapping)
|
36
32
|
standard_mapping = NdrImport::StandardMappings.mappings[mapping_name]
|
37
|
-
return
|
38
|
-
|
39
|
-
# Work on deep copies of reference standard mapping,
|
40
|
-
# as well as the given column_mapping:
|
41
|
-
reference = YAML.load(standard_mapping.to_yaml)
|
42
|
-
incoming = YAML.load(column_mapping.to_yaml)
|
33
|
+
return unless standard_mapping
|
43
34
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
35
|
+
column_mapping.each_with_object(standard_mapping.dup) do |(key, value), result|
|
36
|
+
if 'mappings' == key
|
37
|
+
# Column mapping appends mappings to the standard mapping...
|
38
|
+
result[key] += value
|
39
|
+
else
|
40
|
+
# ...but overwrites other values.
|
41
|
+
result[key] = value
|
42
|
+
end
|
43
|
+
end
|
48
44
|
end
|
49
45
|
|
50
46
|
# This takes an array of raw values and their associated mappings and returns an attribute hash
|
51
47
|
# It accepts a block to alter the raw value that is stored in the raw text (if necessary),
|
52
48
|
# enabling it to work for different sources
|
53
49
|
def mapped_line(line, line_mappings)
|
54
|
-
attributes = {}
|
55
|
-
rawtext = {}
|
56
50
|
validate_line_mappings(line_mappings)
|
57
51
|
|
52
|
+
rawtext = {}
|
53
|
+
data = {}
|
54
|
+
|
58
55
|
line.each_with_index do |raw_value, col|
|
59
56
|
column_mapping = line_mappings[col]
|
60
57
|
if column_mapping.nil?
|
@@ -67,7 +64,6 @@ module NdrImport::Mapper
|
|
67
64
|
if column_mapping['standard_mapping']
|
68
65
|
column_mapping = standard_mapping(column_mapping['standard_mapping'], column_mapping)
|
69
66
|
end
|
70
|
-
field_mappings = column_mapping['mappings'] || []
|
71
67
|
|
72
68
|
# Establish the rawtext column name we are to use for this column
|
73
69
|
rawtext_column_name = (column_mapping['rawtext_name'] || column_mapping['column']).downcase
|
@@ -85,68 +81,56 @@ module NdrImport::Mapper
|
|
85
81
|
# Store the raw column value
|
86
82
|
rawtext[rawtext_column_name] = raw_value
|
87
83
|
|
88
|
-
|
84
|
+
next unless column_mapping.key?('mappings')
|
85
|
+
column_mapping['mappings'].each do |field_mapping|
|
89
86
|
# create a duplicate of the raw value we can manipulate
|
90
87
|
original_value = raw_value ? raw_value.dup : nil
|
91
88
|
|
92
89
|
replace_before_mapping(original_value, field_mapping)
|
93
90
|
value = mapped_value(original_value, field_mapping)
|
94
91
|
|
92
|
+
# We don't care about blank values, unless we're mapping a :join
|
93
|
+
# field (in which case, :compact may or may not be being used).
|
94
|
+
next if value.blank? && !field_mapping['join']
|
95
|
+
|
95
96
|
field = field_mapping['field']
|
96
97
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
attributes[field][:compact] = field_mapping['compact'] if field_mapping.include?('compact')
|
111
|
-
elsif field_mapping['priority']
|
112
|
-
attributes[field][:priority][field_mapping['priority']] = value
|
113
|
-
else
|
114
|
-
# Check if already a mapped-to field, and assign default low
|
115
|
-
# priority
|
116
|
-
attributes[field][:priority][1] = value
|
117
|
-
attributes[field][:value] = value
|
118
|
-
end
|
98
|
+
data[field] ||= {}
|
99
|
+
data[field][:values] ||= [] # "better" values come earlier
|
100
|
+
data[field][:compact] = true unless data[field].key?(:compact)
|
101
|
+
|
102
|
+
if field_mapping['order']
|
103
|
+
data[field][:join] ||= field_mapping['join']
|
104
|
+
data[field][:compact] = field_mapping['compact'] if field_mapping.key?('compact')
|
105
|
+
|
106
|
+
data[field][:values][field_mapping['order'] - 1] = value
|
107
|
+
elsif field_mapping['priority']
|
108
|
+
data[field][:values][field_mapping['priority']] = value
|
109
|
+
else
|
110
|
+
data[field][:values].unshift(value) # new "best" value
|
119
111
|
end
|
120
112
|
end
|
121
113
|
end
|
122
114
|
|
115
|
+
attributes = {}
|
116
|
+
|
123
117
|
# tidy up many to one field mappings
|
124
118
|
# and one to many, for cross-populating
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
119
|
+
data.each do |field, field_data|
|
120
|
+
values = field_data[:values]
|
121
|
+
|
122
|
+
attributes[field] =
|
123
|
+
if field_data.key?(:join)
|
124
|
+
# Map "blank" values to nil:
|
125
|
+
values = values.map { |value| value if value.present? }
|
126
|
+
values.compact! if field_data[:compact]
|
127
|
+
values.join(field_data[:join])
|
132
128
|
else
|
133
|
-
|
134
|
-
end
|
135
|
-
t = value.sort.map do |_part_order, part_value|
|
136
|
-
part_value.blank? ? nil : part_value
|
129
|
+
values.detect(&:present?)
|
137
130
|
end
|
138
|
-
if compact
|
139
|
-
attributes[field] = t.compact.join(join_string)
|
140
|
-
else
|
141
|
-
attributes[field] = t.join(join_string)
|
142
|
-
end
|
143
|
-
else
|
144
|
-
attributes[field][:priority].reject! { |_k, v| v.blank? }
|
145
|
-
attributes[field] = attributes[field][:priority].sort.first[1]
|
146
|
-
end
|
147
131
|
end
|
148
132
|
|
149
|
-
attributes[:rawtext] = rawtext
|
133
|
+
attributes[:rawtext] = rawtext # Assign last
|
150
134
|
attributes
|
151
135
|
end
|
152
136
|
|
@@ -186,8 +170,9 @@ module NdrImport::Mapper
|
|
186
170
|
fail "Standard mapping \"#{column_mapping['standard_mapping']}\" does not exist"
|
187
171
|
end
|
188
172
|
end
|
189
|
-
|
190
|
-
|
173
|
+
|
174
|
+
next unless column_mapping.key?('mappings')
|
175
|
+
column_mapping['mappings'].each do |field_mapping|
|
191
176
|
field = field_mapping['field']
|
192
177
|
if field_mapping['priority']
|
193
178
|
fail 'Cannot have duplicate priorities' if priority[field] == field_mapping['priority']
|
data/lib/ndr_import/version.rb
CHANGED
@@ -87,27 +87,4 @@ class DelimitedTest < ActiveSupport::TestCase
|
|
87
87
|
assert_equal ['2'] * 26, sheet[2]
|
88
88
|
end
|
89
89
|
end
|
90
|
-
|
91
|
-
def test_each_delimited_table_should_be_deprecated
|
92
|
-
original_stderr = $stderr
|
93
|
-
$stderr = StringIO.new
|
94
|
-
|
95
|
-
table = @importer.send(:each_delimited_table, @permanent_test_files.join('normal.csv'))
|
96
|
-
table.each do |tablename, sheet|
|
97
|
-
assert_nil tablename
|
98
|
-
sheet = sheet.to_a
|
99
|
-
assert_equal(('A'..'Z').to_a, sheet[0])
|
100
|
-
assert_equal ['1'] * 26, sheet[1]
|
101
|
-
assert_equal ['2'] * 26, sheet[2]
|
102
|
-
end
|
103
|
-
|
104
|
-
assert_match(/\A\[warning\] each_delimited_table will be deprecated/, $stderr.string)
|
105
|
-
ensure
|
106
|
-
$stderr = original_stderr
|
107
|
-
end if Gem::Requirement.new('< 4.0.0').satisfied_by?(Gem::Version.new(NdrImport::VERSION))
|
108
|
-
|
109
|
-
def test_deprecated_methods_removed_in_v3
|
110
|
-
refute @importer.public_methods.include?(:each_delimited_table), 'should be removed in v4.0.0'
|
111
|
-
refute @importer.public_methods.include?(:each_delimited_row), 'should be removed in v4.0.0'
|
112
|
-
end if Gem::Requirement.new('>= 4.0.0').satisfied_by?(Gem::Version.new(NdrImport::VERSION))
|
113
90
|
end
|
@@ -79,26 +79,4 @@ class ExcelTest < ActiveSupport::TestCase
|
|
79
79
|
assert_equal %w(1A 1B), sheet.first
|
80
80
|
end
|
81
81
|
end
|
82
|
-
|
83
|
-
def test_each_excel_table_should_be_deprecated
|
84
|
-
original_stderr = $stderr
|
85
|
-
$stderr = StringIO.new
|
86
|
-
|
87
|
-
table = @importer.send(:each_excel_table, @permanenttestfiles.join('sample_xlsx.xlsx'))
|
88
|
-
table.each do |tablename, sheet|
|
89
|
-
assert_equal 'Sheet1', tablename
|
90
|
-
assert_equal %w(1A 1B), sheet.first
|
91
|
-
end
|
92
|
-
|
93
|
-
assert_match(/\A\[warning\] each_excel_table will be deprecated/, $stderr.string)
|
94
|
-
ensure
|
95
|
-
$stderr = original_stderr
|
96
|
-
end if Gem::Requirement.new('< 4.0.0').satisfied_by?(Gem::Version.new(NdrImport::VERSION))
|
97
|
-
|
98
|
-
def test_deprecated_methods_removed_in_v3
|
99
|
-
refute @importer.protected_methods.include?(:each_excel_table), 'should be removed in v4.0.0'
|
100
|
-
refute @importer.private_methods.include?(:each_excel_row), 'should be removed in v4.0.0'
|
101
|
-
refute @importer.private_methods.include?(:each_xls_row), 'should be removed in v4.0.0'
|
102
|
-
refute @importer.private_methods.include?(:each_xlsx_row), 'should be removed in v4.0.0'
|
103
|
-
end if Gem::Requirement.new('>= 4.0.0').satisfied_by?(Gem::Version.new(NdrImport::VERSION))
|
104
82
|
end
|
data/test/test_helper.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:
|
4
|
+
version: 4.0.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: 2016-03-
|
11
|
+
date: 2016-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|