module Reflect

Constants

Error

Public Class Methods

call(subject, constant_name, strict: nil, ancestors: nil) click to toggle source
# File lib/reflect/reflect.rb, line 4
def self.call(subject, constant_name, strict: nil, ancestors: nil)
  Reflection.build(subject, constant_name, strict: strict, ancestors: ancestors)
end
constant(subject) click to toggle source
# File lib/reflect/reflect.rb, line 8
def self.constant(subject)
  [Module, Class].include?(subject.class) ? subject : subject.class
end
constant?(subject_constant, constant_name, ancestors: nil) click to toggle source
# File lib/reflect/reflect.rb, line 34
def self.constant?(subject_constant, constant_name, ancestors: nil)
  ancestors = Reflection::Default.ancestors if ancestors.nil?
  subject_constant.const_defined?(constant_name, ancestors)
end
get_constant(subject_constant, constant_name, strict: nil, ancestors: nil) click to toggle source
# File lib/reflect/reflect.rb, line 12
def self.get_constant(subject_constant, constant_name, strict: nil, ancestors: nil)
  strict = Reflection::Default.strict if strict.nil?
  ancestors = Reflection::Default.ancestors if ancestors.nil?

  constant = nil

  if constant?(subject_constant, constant_name, ancestors: ancestors)
    constant = get_constant!(subject_constant, constant_name, ancestors: ancestors)
  end

  if constant.nil? && strict
    raise Reflect::Error, "Namespace #{constant_name} is not defined in #{subject_constant.name}"
  end

  constant
end
get_constant!(subject_constant, constant_name, ancestors: nil) click to toggle source
# File lib/reflect/reflect.rb, line 29
def self.get_constant!(subject_constant, constant_name, ancestors: nil)
  ancestors = Reflection::Default.ancestors if ancestors.nil?
  subject_constant.const_get(constant_name, ancestors)
end