module Forwarder::Meta
Constants
- ObjectContainer
Public Instance Methods
eval_body(application, as, to, with)
click to toggle source
# File lib/forwarder/meta.rb, line 4 def eval_body application, as, to, with lambda do |*args, &blk| arguments = ( [ with ].flatten + args ).compact # rcv = __eval_receiver__( to ) rcv = Meta.eval_receiver to, self # p as: as, to: to, rcv: rcv, args: arguments, app: application, self: self rcv.send( as, *arguments, &(application||blk) ) end end
eval_chain(names, context)
click to toggle source
# File lib/forwarder/meta.rb, line 14 def eval_chain names, context names.inject context do | ctxt, name | Meta.eval_symbolic_receiver name, ctxt end end
eval_receiver(name, context)
click to toggle source
# File lib/forwarder/meta.rb, line 20 def eval_receiver name, context case name when Proc context.instance_eval( &name ) when String, Symbol # p name: name, context: context Meta.eval_symbolic_receiver name, context when ObjectContainer name.object when Array Meta.eval_chain name, context end end
eval_receiver_body()
click to toggle source
# File lib/forwarder/meta.rb, line 33 def eval_receiver_body lambda do | name | end end
eval_symbolic_receiver(name, context)
click to toggle source
# File lib/forwarder/meta.rb, line 38 def eval_symbolic_receiver name, context case "#{name}" when /\A@/ context.instance_variable_get name else context.send name end end