Sha256: 8bb26fd5f1d09d89c9ea3f2de9163e07d9bffb43eb610a435976eace0b9e499c

Contents?: true

Size: 582 Bytes

Versions: 1

Compression:

Stored size: 582 Bytes

Contents

begin
  require 'calibre/functor'
rescue LoadError
  require 'facet/functor'
end

class Object

  # Returns a Functor that allows one to call any
  # Kernel method bound to self.
  #
  #   class A
  #     def object_id ; "OBTUSE" ; end
  #   end
  #
  #   c = C.new
  #   c.object_id             #=> "OBTUSE"
  #   c.__meta__.object_id    #=> 6664875832
  #
  def __meta__
    @__meta__ ||= Functor.new do |meth, *args|  # &blk|
      Kernel.instance_method(meth).bind(self).call(*args) # ,&blk)
    end
  end

  alias_method :meta, :__meta__  # should this even be available?

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
facets-1.2.0 lib/facets/core/kernel/__meta__.rb