module ExMachina::Util

Public Instance Methods

invoke_method(context, meth, *args) click to toggle source

Invoke method or lambda on given context passing correspondent args

# File lib/ex_machina/util.rb, line 21
def invoke_method(context, meth, *args)
  return if meth.nil?

  if meth.respond_to?(:call)
    all_args    = Array([context, *args])
    meth_params = meth.parameters
    meth_args   = *all_args.first(meth_params.size)

    meth.call(*meth_args)

  elsif context.respond_to?(meth)
    meth_params = context.method(meth).parameters
    meth_args   = *args.first(meth_params.size)

    context.send(meth, *meth_args)
  end
end