Class: NdrImport::NonTabular::ColumnMapping
- Inherits:
-
Object
- Object
- NdrImport::NonTabular::ColumnMapping
- Defined in:
- lib/ndr_import/non_tabular/column_mapping.rb
Overview
This class stores the mapping for an individual non-tabular column, encapsulating the logic associated with finding matching lines of source data and subsequently capturing arrays of values within them.
Instance Attribute Summary collapse
-
#capture ⇒ Object
Returns the value of attribute capture.
-
#cell_mapping ⇒ Object
Returns the value of attribute cell_mapping.
-
#join ⇒ Object
Returns the value of attribute join.
-
#lines ⇒ Object
Returns the value of attribute lines.
-
#name ⇒ Object
Returns the value of attribute name.
Instance Method Summary collapse
-
#capture_value(line) ⇒ Object
capture the required part of the line by replacing (recusively) the line, with the first captured regular expression group.
-
#initialize(column_mapping) ⇒ ColumnMapping
constructor
A new instance of ColumnMapping.
-
#matching_lines(text) ⇒ Object
This method returns the range of matching source data lines.
- #validate_cell_mapping ⇒ Object
- #validate_presence_of_non_tabular_cell ⇒ Object
- #validate_presence_of_non_tabular_cell_capture ⇒ Object
- #validate_presence_of_non_tabular_cell_lines ⇒ Object
Constructor Details
#initialize(column_mapping) ⇒ ColumnMapping
Returns a new instance of ColumnMapping.
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/ndr_import/non_tabular/column_mapping.rb', line 11 def initialize(column_mapping) @name = column_mapping['rawtext_name'] || column_mapping['column'] || column_mapping['standard_mapping'] @cell_mapping = column_mapping['non_tabular_cell'] validate_cell_mapping @lines = @cell_mapping['lines'] @join = @cell_mapping['join'] end |
Instance Attribute Details
#capture ⇒ Object
Returns the value of attribute capture.
9 10 11 |
# File 'lib/ndr_import/non_tabular/column_mapping.rb', line 9 def capture @capture end |
#cell_mapping ⇒ Object
Returns the value of attribute cell_mapping.
9 10 11 |
# File 'lib/ndr_import/non_tabular/column_mapping.rb', line 9 def cell_mapping @cell_mapping end |
#join ⇒ Object
Returns the value of attribute join.
9 10 11 |
# File 'lib/ndr_import/non_tabular/column_mapping.rb', line 9 def join @join end |
#lines ⇒ Object
Returns the value of attribute lines.
9 10 11 |
# File 'lib/ndr_import/non_tabular/column_mapping.rb', line 9 def lines @lines end |
#name ⇒ Object
Returns the value of attribute name.
9 10 11 |
# File 'lib/ndr_import/non_tabular/column_mapping.rb', line 9 def name @name end |
Instance Method Details
#capture_value(line) ⇒ Object
capture the required part of the line by replacing (recusively) the line, with the first captured regular expression group. This is hardcoded in an attempt to preserve the rawtext as much as possible. The captured value is ‘String#strip`ed by default.
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/ndr_import/non_tabular/column_mapping.rb', line 37 def capture_value(line) value = line.dup [@cell_mapping['capture']].flatten.each do |pattern| if matchdata = value.to_s.match(pattern) value = matchdata[1] else value = nil end end value.nil? ? value : value.strip end |
#matching_lines(text) ⇒ Object
This method returns the range of matching source data lines. If the range is a RegexpRange then it will calculate it for the text provided.
25 26 27 28 29 30 31 |
# File 'lib/ndr_import/non_tabular/column_mapping.rb', line 25 def matching_lines(text) if @lines.is_a?(RegexpRange) @lines.to_range(text) else @lines end end |
#validate_cell_mapping ⇒ Object
49 50 51 52 53 |
# File 'lib/ndr_import/non_tabular/column_mapping.rb', line 49 def validate_cell_mapping validate_presence_of_non_tabular_cell validate_presence_of_non_tabular_cell_lines validate_presence_of_non_tabular_cell_capture end |
#validate_presence_of_non_tabular_cell ⇒ Object
55 56 57 58 59 |
# File 'lib/ndr_import/non_tabular/column_mapping.rb', line 55 def validate_presence_of_non_tabular_cell return if @cell_mapping fail NdrImport::MappingError, I18n.t('mapping.errors.missing_non_tabular_cell', :name => @name) end |
#validate_presence_of_non_tabular_cell_capture ⇒ Object
67 68 69 70 71 |
# File 'lib/ndr_import/non_tabular/column_mapping.rb', line 67 def validate_presence_of_non_tabular_cell_capture return if @cell_mapping['capture'] fail NdrImport::MappingError, I18n.t('mapping.errors.missing_non_tabular_cell_capture', :name => @name) end |
#validate_presence_of_non_tabular_cell_lines ⇒ Object
61 62 63 64 65 |
# File 'lib/ndr_import/non_tabular/column_mapping.rb', line 61 def validate_presence_of_non_tabular_cell_lines return if @cell_mapping['lines'] fail NdrImport::MappingError, I18n.t('mapping.errors.missing_non_tabular_cell_lines', :name => @name) end |