class Object
Public Instance Methods
no_sltd(method_or_proc=nil, &block)
click to toggle source
# File lib/no_sltd.rb, line 14 def no_sltd method_or_proc=nil, &block raise '`no_sltd def func end`, `block = no_sltd -> {}` or `no_sltd { block.call }`' unless block_given? ^ !!method_or_proc if block_given? NoSLTD.recursive(&block) elsif Proc === method_or_proc lambda do |*a, &b| NoSLTD.recursive { method_or_proc.call(*a, &b) } end else receiver = respond_to?(:instance_method) ? self : self.class original = receiver.instance_method method_or_proc receiver.send :remove_method, method_or_proc receiver.send :define_method, method_or_proc do |*a, &b| NoSLTD.recursive { original.bind(self).call(*a, &b) } end end end