ndr_import 4.1.2 → 4.1.3

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
  SHA1:
3
- metadata.gz: 48a0ef9610f39b40881de9c2cbd4d79ac2fe197e
4
- data.tar.gz: 69303c1297dcb5db806b996e95afad84fd31cae4
3
+ metadata.gz: e9a249e271f414563cc3f5c345788d975c53345b
4
+ data.tar.gz: 2db4b6bdf135d441cc80be272d3ced1334a38b23
5
5
  SHA512:
6
- metadata.gz: 877ff4160d5eeb02f372cae707118fffad4e8b0b702435753cdd06095b11097ac41a5a2010827936449d1f7656df9fbb62196cc7dc756be16a57f8a1e94c92f3
7
- data.tar.gz: d330674f04f8bbd6cc50197ed48d75943182209ed2d20721b95bedb3fadc93d9105572d2c76f5ce9d595d1f8c2ed64276905244067f107b1bc0216c69b81131a
6
+ metadata.gz: 524323ff88ea70f8fe2c87c9d89c29483c73ac772e89c236ecd514afdc760b16527c0f42183664553b9770bb53c3be04679817346dcf77f27d4b3781676025a9
7
+ data.tar.gz: d455318ed9c99561166db9ee12170b94e48e0d89dd9f955622f0cf687d87df4c921c13a41247625a7670ff71024864ba651747e2311e8e0246f11b93076dc44c
data/code_safety.yml CHANGED
@@ -126,8 +126,8 @@ file safety:
126
126
  safe_revision: 6c6f204fab2f4232d81cb76aa523c26b0c490ae7
127
127
  lib/ndr_import/mapper.rb:
128
128
  comments:
129
- reviewed_by: josh.pencheon
130
- safe_revision: fc27767d88956ef8e1182d6c1a6335266d34f7c5
129
+ reviewed_by: brian.shand
130
+ safe_revision: ef4c15a443efa3e2de660e704f7d96e77cff1a93
131
131
  lib/ndr_import/mapping_error.rb:
132
132
  comments:
133
133
  reviewed_by: timgentry
@@ -169,9 +169,9 @@ file safety:
169
169
  reviewed_by: josh.pencheon
170
170
  safe_revision: 36143ff4f48e0433a7b04b63143ef6d6d2481fec
171
171
  lib/ndr_import/version.rb:
172
- comments: another check?
173
- reviewed_by: josh.pencheon
174
- safe_revision: 5b8e738929c12ccf800a2729d567fdf57a1bc159
172
+ comments:
173
+ reviewed_by: timgentry
174
+ safe_revision: 39c9976eb8ae83c6808956ab30a7b74669232612
175
175
  ndr_import.gemspec:
176
176
  comments:
177
177
  reviewed_by: josh.pencheon
@@ -6,20 +6,43 @@ require 'msworddoc-extractor'
6
6
 
7
7
  # This module provides helper logic for mapping unified sources for import into the system
8
8
  module NdrImport::Mapper
9
+ # The mapper runs nested loops that can result in the allocation of millions
10
+ # of short-lived objects. By pre-allocating these known keys, we can reduce GC pressure.
11
+ module Strings
12
+ CLEAN = 'clean'.freeze
13
+ COLUMN = 'column'.freeze
14
+ COMPACT = 'compact'.freeze
15
+ DAYSAFTER = 'daysafter'.freeze
16
+ DECODE = 'decode'.freeze
17
+ DO_NOT_CAPTURE = 'do_not_capture'.freeze
18
+ FIELD = 'field'.freeze
19
+ FORMAT = 'format'.freeze
20
+ JOIN = 'join'.freeze
21
+ MAP = 'map'.freeze
22
+ MAPPINGS = 'mappings'.freeze
23
+ MATCH = 'match'.freeze
24
+ ORDER = 'order'.freeze
25
+ PRIORITY = 'priority'.freeze
26
+ RAWTEXT_NAME = 'rawtext_name'.freeze
27
+ REPLACE = 'replace'.freeze
28
+ STANDARD_MAPPING = 'standard_mapping'.freeze
29
+ UNPACK_PATTERN = 'unpack_pattern'.freeze
30
+ end
31
+
9
32
  private
10
33
 
11
34
  # uses the mappings for this line to unpack the fixed width string
12
35
  # returning an array of the resulting columns
13
36
  def fixed_width_columns(line, line_mappings)
14
- unpack_patterns = line_mappings.map { |c| c['unpack_pattern'] }.join
37
+ unpack_patterns = line_mappings.map { |c| c[Strings::UNPACK_PATTERN] }.join
15
38
  line.unpack(unpack_patterns)
16
39
  end
17
40
 
18
41
  # the replace option can be used before any other mapping option
19
42
  def replace_before_mapping(original_value, field_mapping)
20
- return unless original_value && field_mapping.include?('replace')
43
+ return unless original_value && field_mapping.include?(Strings::REPLACE)
21
44
 
22
- replaces = field_mapping['replace']
45
+ replaces = field_mapping[Strings::REPLACE]
23
46
 
24
47
  if replaces.is_a?(Array)
25
48
  replaces.each { |repls| apply_replaces(original_value, repls) }
@@ -43,7 +66,7 @@ module NdrImport::Mapper
43
66
  return unless standard_mapping
44
67
 
45
68
  column_mapping.each_with_object(standard_mapping.dup) do |(key, value), result|
46
- if 'mappings' == key
69
+ if Strings::MAPPINGS == key
47
70
  # Column mapping appends mappings to the standard mapping...
48
71
  result[key] += value
49
72
  else
@@ -69,17 +92,17 @@ module NdrImport::Mapper
69
92
  "Line has too many columns (expected #{line_mappings.size} but got #{line.size})"
70
93
  end
71
94
 
72
- next if column_mapping['do_not_capture']
95
+ next if column_mapping[Strings::DO_NOT_CAPTURE]
73
96
 
74
- if column_mapping['standard_mapping']
75
- column_mapping = standard_mapping(column_mapping['standard_mapping'], column_mapping)
97
+ if column_mapping[Strings::STANDARD_MAPPING]
98
+ column_mapping = standard_mapping(column_mapping[Strings::STANDARD_MAPPING], column_mapping)
76
99
  end
77
100
 
78
101
  # Establish the rawtext column name we are to use for this column
79
- rawtext_column_name = (column_mapping['rawtext_name'] || column_mapping['column']).downcase
102
+ rawtext_column_name = (column_mapping[Strings::RAWTEXT_NAME] || column_mapping[Strings::COLUMN]).downcase
80
103
 
81
104
  # Replace raw_value with decoded raw_value
82
- Array(column_mapping['decode']).each do |encoding|
105
+ Array(column_mapping[Strings::DECODE]).each do |encoding|
83
106
  raw_value = decode_raw_value(raw_value, encoding)
84
107
  end
85
108
 
@@ -91,8 +114,8 @@ module NdrImport::Mapper
91
114
  # Store the raw column value
92
115
  rawtext[rawtext_column_name] = raw_value
93
116
 
94
- next unless column_mapping.key?('mappings')
95
- column_mapping['mappings'].each do |field_mapping|
117
+ next unless column_mapping.key?(Strings::MAPPINGS)
118
+ column_mapping[Strings::MAPPINGS].each do |field_mapping|
96
119
  # create a duplicate of the raw value we can manipulate
97
120
  original_value = raw_value ? raw_value.dup : nil
98
121
 
@@ -101,21 +124,21 @@ module NdrImport::Mapper
101
124
 
102
125
  # We don't care about blank values, unless we're mapping a :join
103
126
  # field (in which case, :compact may or may not be being used).
104
- next if value.blank? && !field_mapping['join']
127
+ next if value.blank? && !field_mapping[Strings::JOIN]
105
128
 
106
- field = field_mapping['field']
129
+ field = field_mapping[Strings::FIELD]
107
130
 
108
131
  data[field] ||= {}
109
132
  data[field][:values] ||= [] # "better" values come earlier
110
133
  data[field][:compact] = true unless data[field].key?(:compact)
111
134
 
112
- if field_mapping['order']
113
- data[field][:join] ||= field_mapping['join']
114
- data[field][:compact] = field_mapping['compact'] if field_mapping.key?('compact')
135
+ if field_mapping[Strings::ORDER]
136
+ data[field][:join] ||= field_mapping[Strings::JOIN]
137
+ data[field][:compact] = field_mapping[Strings::COMPACT] if field_mapping.key?(Strings::COMPACT)
115
138
 
116
- data[field][:values][field_mapping['order'] - 1] = value
117
- elsif field_mapping['priority']
118
- data[field][:values][field_mapping['priority']] = value
139
+ data[field][:values][field_mapping[Strings::ORDER] - 1] = value
140
+ elsif field_mapping[Strings::PRIORITY]
141
+ data[field][:values][field_mapping[Strings::PRIORITY]] = value
119
142
  else
120
143
  data[field][:values].unshift(value) # new "best" value
121
144
  end
@@ -145,26 +168,26 @@ module NdrImport::Mapper
145
168
  end
146
169
 
147
170
  def mapped_value(original_value, field_mapping)
148
- if field_mapping.include?('format')
171
+ if field_mapping.include?(Strings::FORMAT)
149
172
  begin
150
- return original_value.blank? ? nil : original_value.to_date(field_mapping['format'])
173
+ return original_value.blank? ? nil : original_value.to_date(field_mapping[Strings::FORMAT])
151
174
  rescue ArgumentError => e
152
175
  e2 = ArgumentError.new("#{e} value #{original_value.inspect}")
153
176
  e2.set_backtrace(e.backtrace)
154
177
  raise e2
155
178
  end
156
- elsif field_mapping.include?('clean')
157
- return original_value.blank? ? nil : original_value.clean(field_mapping['clean'])
158
- elsif field_mapping.include?('map')
159
- return field_mapping['map'] ? field_mapping['map'][original_value] : nil
160
- elsif field_mapping.include?('match')
161
- # WARNING:TVB Thu Aug 9 17:09:25 BST 2012 field_mapping['match'] regexp
179
+ elsif field_mapping.include?(Strings::CLEAN)
180
+ return original_value.blank? ? nil : original_value.clean(field_mapping[Strings::CLEAN])
181
+ elsif field_mapping.include?(Strings::MAP)
182
+ return field_mapping[Strings::MAP] ? field_mapping[Strings::MAP][original_value] : nil
183
+ elsif field_mapping.include?(Strings::MATCH)
184
+ # WARNING:TVB Thu Aug 9 17:09:25 BST 2012 field_mapping[Strings::MATCH] regexp
162
185
  # may need to be escaped
163
- matches = Regexp.new(field_mapping['match']).match(original_value)
186
+ matches = Regexp.new(field_mapping[Strings::MATCH]).match(original_value)
164
187
  return matches[1].strip if matches && matches.size > 0
165
- elsif field_mapping.include?('daysafter')
188
+ elsif field_mapping.include?(Strings::DAYSAFTER)
166
189
  return original_value unless original_value.to_i.to_s == original_value.to_s
167
- return original_value.to_i.days.since(field_mapping['daysafter'].to_time).to_date
190
+ return original_value.to_i.days.since(field_mapping[Strings::DAYSAFTER].to_time).to_date
168
191
  else
169
192
  return nil if original_value.blank?
170
193
  return original_value.is_a?(String) ? original_value.strip : original_value
@@ -175,18 +198,18 @@ module NdrImport::Mapper
175
198
  def validate_line_mappings(line_mappings)
176
199
  priority = {}
177
200
  line_mappings.each do |column_mapping|
178
- if column_mapping['standard_mapping']
179
- if standard_mapping(column_mapping['standard_mapping'], column_mapping).nil?
180
- fail "Standard mapping \"#{column_mapping['standard_mapping']}\" does not exist"
201
+ if column_mapping[Strings::STANDARD_MAPPING]
202
+ if standard_mapping(column_mapping[Strings::STANDARD_MAPPING], column_mapping).nil?
203
+ fail "Standard mapping \"#{column_mapping[Strings::STANDARD_MAPPING]}\" does not exist"
181
204
  end
182
205
  end
183
206
 
184
- next unless column_mapping.key?('mappings')
185
- column_mapping['mappings'].each do |field_mapping|
186
- field = field_mapping['field']
187
- if field_mapping['priority']
188
- fail 'Cannot have duplicate priorities' if priority[field] == field_mapping['priority']
189
- priority[field] = field_mapping['priority']
207
+ next unless column_mapping.key?(Strings::MAPPINGS)
208
+ column_mapping[Strings::MAPPINGS].each do |field_mapping|
209
+ field = field_mapping[Strings::FIELD]
210
+ if field_mapping[Strings::PRIORITY]
211
+ fail 'Cannot have duplicate priorities' if priority[field] == field_mapping[Strings::PRIORITY]
212
+ priority[field] = field_mapping[Strings::PRIORITY]
190
213
  else
191
214
  priority[field] = 1
192
215
  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 = '4.1.2'.freeze
4
+ VERSION = '4.1.3'.freeze
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: 4.1.2
4
+ version: 4.1.3
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: 2017-03-08 00:00:00.000000000 Z
11
+ date: 2017-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -430,7 +430,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
430
430
  version: '0'
431
431
  requirements: []
432
432
  rubyforge_project:
433
- rubygems_version: 2.5.2
433
+ rubygems_version: 2.5.1
434
434
  signing_key:
435
435
  specification_version: 4
436
436
  summary: NDR Import