class Cucumber::Salad::Table::Mapping

Attributes

key[RW]
key_transformer[RW]
value_transformer[RW]

Public Class Methods

new(settings = {}) click to toggle source
# File lib/cucumber/salad/table/mapping.rb, line 5
def initialize(settings = {})
  self.key               = settings[:key]
  self.value_transformer = transformer(settings[:value_transformer], :pass)
  self.key_transformer   = transformer(settings[:key_transformer], :keyword)
end

Public Instance Methods

set(instance, row, key, value) click to toggle source
# File lib/cucumber/salad/table/mapping.rb, line 11
def set(instance, row, key, value)
  row[transform_key(instance, key)] = transform_value(instance, value)
end

Private Instance Methods

transform_key(_, k) click to toggle source
# File lib/cucumber/salad/table/mapping.rb, line 19
def transform_key(_, k)
  key || key_transformer.(k)
end
transform_value(instance, value) click to toggle source
# File lib/cucumber/salad/table/mapping.rb, line 23
def transform_value(instance, value)
  instance.instance_exec(value, &value_transformer)
end
transformer(set, fallback) click to toggle source
# File lib/cucumber/salad/table/mapping.rb, line 27
def transformer(set, fallback)
  case set
  when Symbol
    Transformations.send(set)
  when Proc
    set
  when nil
    Transformations.send(fallback)
  else
    raise ArgumentError, "can't convert #{set.inspect} to transformer"
  end
end