Sha256: 3b8449d4dca27485fef7b63d5b4ceb272c7640029046cd91c9db01a13bd61f46

Contents?: true

Size: 392 Bytes

Versions: 1

Compression:

Stored size: 392 Bytes

Contents

#
# Document please.
#
class Ref
   instance_methods.each{|m| undef_method(m)}

   def self.new(obj)
     ref = allocate
     ref.become obj
     ref
   end

   def method_missing(*args, &block)
     @ref.__send__(*args, &block)
   end

   def become(obj)
     old = @ref
     @ref = obj
     old
   end

   def __value__() @ref end
end 


module Kernel
  def ref(x)
    Ref.new(x)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
carats-0.3.0 lib/carat/ref.rb