Sha256: 59b3efb1f3767d75964d0d956d4b36a7fd1ae893f96a3e94f11994761ee0bcf0
Contents?: true
Size: 1.01 KB
Versions: 3
Compression:
Stored size: 1.01 KB
Contents
class Module def find_const(const_name) if const_name[0..1] == '::' Object.find_const(const_name[2..-1]) else nested_const_lookup(const_name) end end def try_dup self end private # Doesn't do any caching since constants can change with remove_const def nested_const_lookup(const_name) constants = [ Object ] unless self == Object self.name.split('::').each do |part| constants.unshift(constants.first.const_get(part)) end end parts = const_name.split('::') # from most to least specific constant, use each as a base and try # to find a constant with the name const_name within them constants.each do |const| # return the nested constant if available return const if parts.all? do |part| const = const.const_defined?(part) ? const.const_get(part) : nil end end # if we get this far then the nested constant was not found raise NameError, "uninitialized constant #{const_name}" end end # class Module
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
extlib-0.9.9 | lib/extlib/module.rb |
mack-facets-0.8.3 | lib/gems/extlib-0.9.9/lib/extlib/module.rb |
mack-facets-0.8.3.1 | lib/gems/extlib-0.9.9/lib/extlib/module.rb |