class Tablecloth::Transformer

Public Class Methods

new(definition, *args) click to toggle source
# File lib/tablecloth/transformer.rb, line 5
def initialize(definition, *args)
  @definition = definition
  @args = args
end

Public Instance Methods

call(value) click to toggle source
# File lib/tablecloth/transformer.rb, line 10
def call(value)
  previous_values = {}

  value.map do |row|
    row.each_with_object({}) do |(key, value), hash|
      column = @definition[key]
      previous_value = previous_values[key]
      result = if previous_value && value == ""
        previous_value
      else
        visit(column).call(value)
      end

      previous_values[key] = result if column.retain_previous_value?
      hash[key] = result
    end
  end
end

Private Instance Methods

visit(column) click to toggle source
# File lib/tablecloth/transformer.rb, line 31
def visit(column)
  Transproc(:"to_#{column.type}", *@args)
end