Class: Cure::Extract::Filter::ColumnHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/cure/extract/filter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeColumnHandler

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

#definitionsObject (readonly)

Returns the value of attribute definitions.



32
33
34
# File 'lib/cure/extract/filter.rb', line 32

def definitions
  @definitions
end

#source_col_positionsObject (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

Parameters:



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

Returns:

  • (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

Parameters:



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

Parameters:



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

Parameters:



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