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

Version Path
inquisitio-0.1.2 lib/inquisitio/active_support.rb
inquisitio-0.1.1 lib/inquisitio/active_support.rb
inquisitio-0.1.0 lib/inquisitio/active_support.rb
inquisitio-0.0.13 lib/inquisitio/active_support.rb