Sha256: 659704f05e2a4e223a5c41498fe7ed1c7581c1f86d75ef72b0d8ca6efd91468e
Contents?: true
Size: 1.17 KB
Versions: 4
Compression:
Stored size: 1.17 KB
Contents
# Add methods to Proc classe class Proc # Define a bind method on Proc object, # This allow to execute a Proc as it was an instance method of reciever # --> used for composition of instance methods adaptations # Src: http://www.ruby-forum.com/topic/173699 def phenomenal_bind(receiver) block, time = self, Time.now (class << receiver; self end).class_eval do method_name = "__bind_#{time.to_i}_#{time.usec}-#{rand(100000)}" define_method(method_name, &block) method = instance_method(method_name) remove_method(method_name) method end.bind(receiver) end # Define a bind_class method on Proc object, # This allow to execute a Proc as it was an class method of klass # --> used for composition of class methods adaptations def phenomenal_class_bind(klass) block, time = self, Time.now method_name = "__bind_#{time.to_i}_#{time.usec}-#{rand(100000)}" method = nil klass.instance_eval do define_singleton_method(method_name, &block) method = method(method_name) (class << self; self end).instance_eval do remove_method(method_name) end end method end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
phenomenal-0.99.0 | lib/phenomenal/proc.rb |
phenomenal-0.9.0 | lib/phenomenal/proc.rb |
phenomenal-0.11.11.24.4 | lib/phenomenal/proc.rb |
phenomenal-0.11.11.24.3 | lib/phenomenal/proc.rb |