class MethodInterceptor::Proxy
Public Class Methods
new(target, p_transformers={}, r_transformers={})
click to toggle source
# File lib/method_interceptor.rb, line 11 def initialize(target, p_transformers={}, r_transformers={}) @target = target @p_transformers = p_transformers @r_transformers = r_transformers end
Public Instance Methods
method_missing(m, *args, &block)
click to toggle source
# File lib/method_interceptor.rb, line 21 def method_missing(m, *args, &block) params = @target.method(m).parameters.map(&:last) t_args = args.dup params.each_with_index do |param, ix| if @p_transformers[[m, param]] && @p_transformers[[m, param]].kind_of?(Proc) t_args[ix] = @p_transformers[[m, param]].call(t_args[ix]) end end r = @target.send(m, *t_args, &block) if @r_transformers[m] && @r_transformers[m].kind_of?(Proc) @r_transformers[m].call(r) else r end end
respond_to?(symbol, include_priv=false)
click to toggle source
# File lib/method_interceptor.rb, line 17 def respond_to?(symbol, include_priv=false) @target.respond_to?(symbol, include_priv) end