PATH:
opt
/
alt
/
ruby34
/
share
/
ruby
# frozen_string_literal: true require "delegate" # Weak Reference class that allows a referenced object to be # garbage-collected. # # A WeakRef may be used exactly like the object it references. # # Usage: # # foo = Object.new # create a new object instance # p foo.to_s # original's class # foo = WeakRef.new(foo) # reassign foo with WeakRef instance # p foo.to_s # should be same class # GC.start # start the garbage collector # p foo.to_s # should raise exception (recycled) # class WeakRef < Delegator VERSION = "0.1.3" ## # RefError is raised when a referenced object has been recycled by the # garbage collector class RefError < StandardError end @@__map = ::ObjectSpace::WeakMap.new ## # Creates a weak reference to +orig+ def initialize(orig) case orig when true, false, nil @delegate_sd_obj = orig else @@__map[self] = orig end super end def __getobj__ # :nodoc: @@__map[self] or defined?(@delegate_sd_obj) ? @delegate_sd_obj : Kernel::raise(RefError, "Invalid Reference - probably recycled", Kernel::caller(2)) end def __setobj__(obj) # :nodoc: end ## # Returns true if the referenced object is still alive. def weakref_alive? @@__map.key?(self) or defined?(@delegate_sd_obj) end end
[+]
yaml
[+]
strscan
[-] ostruct.rb
[edit]
[+]
ruby_vm
[+]
ripper
[-] coverage.rb
[edit]
[+]
set
[-] delegate.rb
[edit]
[-] open-uri.rb
[edit]
[+]
did_you_mean
[-] json.rb
[edit]
[-] openssl.rb
[edit]
[+]
json
[+]
prism
[-] objspace.rb
[edit]
[-] digest.rb
[edit]
[-] yaml.rb
[edit]
[-] bundled_gems.rb
[edit]
[+]
random
[-] forwardable.rb
[edit]
[+]
objspace
[-] weakref.rb
[edit]
[-] error_highlight.rb
[edit]
[-] benchmark.rb
[edit]
[-] uri.rb
[edit]
[-] English.rb
[edit]
[-] timeout.rb
[edit]
[+]
bigdecimal
[-] resolv.rb
[edit]
[+]
uri
[-] tsort.rb
[edit]
[-] find.rb
[edit]
[-] logger.rb
[edit]
[-] psych.rb
[edit]
[+]
psych
[+]
logger
[-] optparse.rb
[edit]
[+]
erb
[-] pp.rb
[edit]
[-] date.rb
[edit]
[-] ripper.rb
[edit]
[-] fiddle.rb
[edit]
[+]
io
[+]
unicode_normalize
[-] cgi.rb
[edit]
[-] pathname.rb
[edit]
[-] did_you_mean.rb
[edit]
[+]
vendor_ruby
[+]
forwardable
[+]
..
[-] prettyprint.rb
[edit]
[-] reline.rb
[edit]
[+]
reline
[-] securerandom.rb
[edit]
[+]
fiddle
[+]
error_highlight
[+]
digest
[-] optionparser.rb
[edit]
[+]
open3
[-] shellwords.rb
[edit]
[-] time.rb
[edit]
[+]
openssl
[+]
syntax_suggest
[-] fileutils.rb
[edit]
[-] socket.rb
[edit]
[+]
net
[-] monitor.rb
[edit]
[-] tempfile.rb
[edit]
[-] syntax_suggest.rb
[edit]
[-] un.rb
[edit]
[-] mkmf.rb
[edit]
[-] erb.rb
[edit]
[-] prism.rb
[edit]
[-] expect.rb
[edit]
[-] open3.rb
[edit]
[-] readline.rb
[edit]
[+]
cgi
[-] tmpdir.rb
[edit]
[-] ipaddr.rb
[edit]
[-] pstore.rb
[edit]
[-] singleton.rb
[edit]
[-] set.rb
[edit]
[+]
optparse