Sha256: 22462cbae67295c4a161c0f4f6f5d95b811666a2e516629551391261c1a5390b
Contents?: true
Size: 1010 Bytes
Versions: 4
Compression:
Stored size: 1010 Bytes
Contents
# This is taken from ActiveSupport module ActiveSupport module String def constantize names = self.gsub("_", "::").split('::') names.shift if names.empty? || names.first.empty? names.inject(Object) do |constant, name| if constant == Object constant.const_get(name) else candidate = constant.const_get(name) next candidate if constant.const_defined?(name, false) next candidate unless Object.const_defined?(name) # Go down the ancestors to check it it's owned # directly before we reach Object or the end of ancestors. constant = constant.ancestors.inject do |const, ancestor| break const if ancestor == Object break ancestor if ancestor.const_defined?(name, false) const end # owner is in Object, so raise constant.const_get(name, false) end end end end end class String include ActiveSupport::String end
Version data entries
4 entries across 4 versions & 1 rubygems