class Qdocs::Base::Const

Public Class Methods

new(original_input) click to toggle source
# File lib/qdocs.rb, line 72
def initialize(original_input)
  @original_input = original_input
end

Public Instance Methods

show(const) { |constant| ... } click to toggle source
# File lib/qdocs.rb, line 76
def show(const)
  const = const.to_s
  constant = find_constant const
  yield constant if block_given?

  const_sl = Object.const_source_location const

  if constant.instance_of?(Class) ||
     constant.instance_of?(Module)
    render_response(constant, :constant, {
      source_location: source_location_to_str(const_sl),
      instance_methods: own_methods(constant.instance_methods).sort,
      singleton_methods: own_methods(constant.methods).sort,
      included_modules: constant.included_modules,
      constants: constant.constants,
      constant_type: constant.class.name,
      inheritance_chain: build_inheritance_chain(constant).map(&:name),
    })
  else
    render_response(constant, :constant, {
      source_location: source_location_to_str(const_sl),
      instance_methods: nil,
      singleton_methods: nil,
      included_modules: nil,
      constants: nil,
      value: constant,
      constant_type: constant.class.name,
      inheritance_chain: nil,
    })
  end
end

Private Instance Methods

build_inheritance_chain(initial) click to toggle source
# File lib/qdocs.rb, line 110
def build_inheritance_chain(initial)
  chain = [initial]
  klass = initial
  while klass.respond_to?(:superclass)
    break unless (sc = klass.superclass)

    chain << sc
    klass = sc
  end
  chain
end