module Rubanok::DSL::Mapping::ClassMethods

Public Instance Methods

map(*fields, activate_on: fields, activate_always: false, ignore_empty_values: Rubanok.ignore_empty_values, filter_with: nil, &block) click to toggle source
# File lib/rubanok/dsl/mapping.rb, line 24
def map(*fields, activate_on: fields, activate_always: false, ignore_empty_values: Rubanok.ignore_empty_values, filter_with: nil, &block)
  filter = filter_with

  if filter.is_a?(Symbol)
    respond_to?(filter) || raise(
      ArgumentError,
      "Unknown class method #{filter} for #{self}. " \
      "Make sure that a filter method is defined before the call to .map."
    )
    filter = method(filter)
  end

  rule = Rule.new(fields, activate_on: activate_on, activate_always: activate_always, ignore_empty_values: ignore_empty_values, filter_with: filter)

  define_method(rule.to_method_name, &block)

  add_rule rule
end