module Parametron::ClassMethods

Attributes

params_validator[R]

Public Instance Methods

method_added(name) click to toggle source
# File lib/parametron.rb, line 24
def method_added(name)
  return if name != @_method_name or instance_variable_get(:"@_METHOD_#{name}_WRAPPED")
  instance_variable_set(:"@_METHOD_#{name}_WRAPPED", true)
  original = instance_method(name.to_sym)

  remove_method(name.to_sym)

  define_method(name) do |params={}|
    begin
      new_params = _rename_params!(_cast!(_validate!(_set_defaults!(params))))
    rescue => e
      if self.class.params_validator.on_exception_handler
        return self.class.params_validator.on_exception_handler.call(e)
      else
        raise e
      end
    end
    original.bind(self).call(new_params)
  end
end
params_for(method_name, opts={}, &block) click to toggle source

Declare known parameter keys opts [Hash]

:strict => false ; Raise exception on unknown key
:reject => true  ; Reject unknown keys
# File lib/parametron.rb, line 16
def params_for(method_name, opts={}, &block)
  instance_eval do
    @_method_name     = method_name.to_sym
    @params_validator = Parametron::ParamsValidator.new(opts)
    @params_validator.instance_eval(&block)
  end
end