Sha256: 3d94e76340292901f0d1dac965b52f4c404c56072c3e1be8f62ddfe68fe8b963

Contents?: true

Size: 620 Bytes

Versions: 10

Compression:

Stored size: 620 Bytes

Contents

require 'facets/kernel/singleton_class'

class Proc

  # Bind a Proc to an object returning a Method.
  #
  # NOTE: This version comes from Rails. The old Facets
  # version used thread.rb, but I no longer think
  # the implementaiton is thread critical. Please
  # make a bug report if this proves wrong.
  #
  def bind(object)
    block, time = self, Time.now
    method_name = "__bind_#{time.to_i}_#{time.usec}"
    object.singleton_class.class_eval do
      define_method(method_name, &block)
      method = instance_method(method_name)
      remove_method(method_name)
      method
    end.bind(object)
  end

end

Version data entries

10 entries across 9 versions & 2 rubygems

Version Path
facets-glimmer-3.2.0 lib/core/facets/proc/bind.rb
facets-3.1.0 lib/core/facets/proc/bind.rb
facets-3.0.0 lib/core/facets/proc/bind.rb
facets-2.9.3 lib/core/facets/proc/bind.rb
facets-2.9.2 lib/core/facets/proc/bind.rb
facets-2.9.2 src/core/facets/proc/bind.rb
facets-2.9.1 lib/core/facets/proc/bind.rb
facets-2.9.0 lib/core/facets/proc/bind.rb
facets-2.9.0.pre.2 lib/core/facets/proc/bind.rb
facets-2.9.0.pre.1 lib/core/facets/proc/bind.rb