Sha256: 9f289be0f30d32f88186e3d485052533f0f42438b990ed87dda87ed5d03790e1

Contents?: true

Size: 1.9 KB

Versions: 2

Compression:

Stored size: 1.9 KB

Contents

unless String.method_defined?(:constantize)
  class String
    # ported from ActiveSupport, so that we don't have to require all of active support for this gem.
    # http://github.com/rails/rails/blob/dd2eb1ea7c34eb6496feaf7e42100f37a8dae76b/activesupport/lib/active_support/inflector.rb#L335-376  
    # Ruby 1.9 introduces an inherit argument for Module#const_get and
    # #const_defined? and changes their default behavior.
    if Module.method(:const_get).arity == 1
      # Tries to find a constant with the name specified in the argument string:
      #
      #   "Module".constantize     # => Module
      #   "Test::Unit".constantize # => Test::Unit
      #
      # The name is assumed to be the one of a top-level constant, no matter whether
      # it starts with "::" or not. No lexical context is taken into account:
      #
      #   C = 'outside'
      #   module M
      #     C = 'inside'
      #     C               # => 'inside'
      #     "C".constantize # => 'outside', same as ::C
      #   end
      #
      # NameError is raised when the name is not in CamelCase or the constant is
      # unknown.
      def constantize
        names = self.split('::')
        names.shift if names.empty? || names.first.empty?

        constant = Object
        names.each do |name|
          constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
        end
        constant
      end
    else
      def constantize
        names = self.split('::')
        names.shift if names.empty? || names.first.empty?

        constant = Object
        names.each do |name|
          constant = constant.const_get(name, false) || constant.const_missing(name)
        end
        constant
      end
    end
  end
end

class Class
  def is_subclass_of?(klass)
    return false if self == Object && klass != Object
    return true if self == klass
    return self.superclass.is_subclass_of?(klass)
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
myronmarston-test_benchmarker-1.2.1 lib/test_benchmarker/core_ext.rb
test_benchmarker-1.2.1 lib/test_benchmarker/core_ext.rb