Method: Object#block_instance_eval

Defined in:
lib/poolparty/core/object.rb

#block_instance_eval(*args, &block) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/poolparty/core/object.rb', line 50

def block_instance_eval(*args, &block)
  return instance_eval(*args,&block) unless block && !block.arity.zero?
  old_method = (self.class.instance_method(:__) rescue nil)
  self.class.send(:define_method, :__, &block)
  block_method = self.class.instance_method(:__)
  if old_method
    self.class.send(:define_method, :__, old_method)
  else
    self.class.send(:remove_method, :__)
  end
  block_method.bind(self).call(*args)
end