Sha256: 3b3cbaee10b0effdc2766a32c209371b331a934cf18210b5418d5a9739d5e42e

Contents?: true

Size: 591 Bytes

Versions: 3

Compression:

Stored size: 591 Bytes

Contents

begin
  require 'calibre/functor'
rescue LoadError
  require 'facets/support/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

3 entries across 3 versions & 1 rubygems

Version Path
facets-1.0.0 lib/facet/kernel/__meta__.rb
facets-1.0.3 packages/core/lib/facet/kernel/__meta__.rb
facets-1.1.0 lib/facet/kernel/__meta__.rb