Class: Cure::Extract::Filter::ColumnHandler
- Inherits:
-
Object
- Object
- Cure::Extract::Filter::ColumnHandler
- Defined in:
- lib/cure/extract/filter.rb
Instance Attribute Summary collapse
-
#definitions ⇒ Object
readonly
Returns the value of attribute definitions.
-
#source_col_positions ⇒ Object
readonly
Returns the value of attribute source_col_positions.
Instance Method Summary collapse
- #filter_row(columns_arr) ⇒ Object
- #has_content? ⇒ TrueClass, FalseClass
-
#initialize ⇒ ColumnHandler
constructor
A new instance of ColumnHandler.
- #set_col_positions(columns_arr) ⇒ Object
- #translate_headers(columns_arr) ⇒ Object
- #with(source:, as: nil) ⇒ Object
Constructor Details
#initialize ⇒ ColumnHandler
Returns a new instance of ColumnHandler.
34 35 36 37 |
# File 'lib/cure/extract/filter.rb', line 34 def initialize @definitions = [] @source_col_positions = nil end |
Instance Attribute Details
#definitions ⇒ Object (readonly)
Returns the value of attribute definitions.
32 33 34 |
# File 'lib/cure/extract/filter.rb', line 32 def definitions @definitions end |
#source_col_positions ⇒ Object (readonly)
Returns the value of attribute source_col_positions.
32 33 34 |
# File 'lib/cure/extract/filter.rb', line 32 def source_col_positions @source_col_positions end |
Instance Method Details
#filter_row(columns_arr) ⇒ Object
71 72 73 74 75 |
# File 'lib/cure/extract/filter.rb', line 71 def filter_row(columns_arr) return columns_arr unless has_content? @source_col_positions.keys.map {|k| columns_arr[k] } end |
#has_content? ⇒ TrueClass, FalseClass
78 79 80 |
# File 'lib/cure/extract/filter.rb', line 78 def has_content? @definitions.any? end |
#set_col_positions(columns_arr) ⇒ Object
51 52 53 54 55 |
# File 'lib/cure/extract/filter.rb', line 51 def set_col_positions(columns_arr) @source_col_positions = @definitions.each_with_object({}) do |d, hash| hash[columns_arr.index(d[:source])] = d end end |
#translate_headers(columns_arr) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/cure/extract/filter.rb', line 58 def translate_headers(columns_arr) return columns_arr unless has_content? @source_col_positions.map do |position, val| if position.nil? raise "Cannot find header position for #{val[:source]}. Please check it exists." end columns_arr[position] = val[:as] end end |
#with(source:, as: nil) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/cure/extract/filter.rb', line 41 def with(source:, as: nil) @definitions << { source: source, as: as || source } self end |