class TurboTest::ConstantTracer::Constructor

Public Class Methods

new(original_class) click to toggle source
# File lib/turbo_test_constant_tracer/constructor.rb, line 6
def initialize(original_class)
  @klass = original_class
  @klass_name = original_class.name.gsub("::", "")
end

Public Instance Methods

construct() click to toggle source
# File lib/turbo_test_constant_tracer/constructor.rb, line 11
def construct
  return ProxyKlass.const_get(@klass_name) if proxy_class_defined?

  Klass.define(@klass, @klass_name).tap do
    prepend_equality_operators_to_original_class
    prepend_equality_operators Numeric
    prepend_equality_operators Comparable
  end
end

Private Instance Methods

prepend_equality_operators(mod) click to toggle source
# File lib/turbo_test_constant_tracer/constructor.rb, line 33
def prepend_equality_operators(mod)
  return unless @klass.ancestors.include?(mod)

  mod.singleton_class.prepend(CaseEquality)
  mod.singleton_class.prepend(Equality)
end
prepend_equality_operators_to_original_class() click to toggle source
# File lib/turbo_test_constant_tracer/constructor.rb, line 27
def prepend_equality_operators_to_original_class
  s_class = @klass.singleton_class
  s_class.prepend(CaseEquality)
  s_class.prepend(Equality)
end
proxy_class_defined?() click to toggle source
# File lib/turbo_test_constant_tracer/constructor.rb, line 23
def proxy_class_defined?
  ProxyKlass.const_defined? @klass_name, false
end