class Unused::MethodAliasListener

Constants

ESSENTIAL_METHODS
ESSENTIAL_METHODS_TO_DEFINE

Public Class Methods

alias_pattern(method_name) click to toggle source
# File lib/unused/method_alias_listener.rb, line 35
def self.alias_pattern(method_name)
  "_#{method_name}_UNUSED_ALIAS_"
end
new() click to toggle source
# File lib/unused/method_alias_listener.rb, line 23
def initialize
  @trace = define_tracepoint
end

Public Instance Methods

disable() click to toggle source
# File lib/unused/method_alias_listener.rb, line 31
def disable
  @trace.disable
end
enable() click to toggle source
# File lib/unused/method_alias_listener.rb, line 27
def enable
  @trace.enable
end

Private Instance Methods

alias_essential_methods(defined_obj) click to toggle source
Calls superclass method
# File lib/unused/method_alias_listener.rb, line 49
def alias_essential_methods(defined_obj)
  ESSENTIAL_METHODS.each do |method|
    alias_name = self.class.alias_pattern(method)
    defined_obj.alias_method(alias_name, method)
    defined_obj.singleton_class.alias_method(alias_name, method)
  end

  ESSENTIAL_METHODS_TO_DEFINE.each do |method|
    alias_name = self.class.alias_pattern(method)
    defined_obj.define_method(method) { |*args| super(*args) }
    defined_obj.singleton_class.define_method(method) { |*args| super(*args) }
    defined_obj.alias_method(alias_name, method)
    defined_obj.singleton_class.alias_method(alias_name, method)
    defined_obj.remove_method(method)
    defined_obj.singleton_class.remove_method(method)
  end
end
define_tracepoint() click to toggle source
# File lib/unused/method_alias_listener.rb, line 41
def define_tracepoint
  TracePoint.new(:class) do |tp|
    if tp.path.start_with?(Unused.config.path)
      alias_essential_methods(tp.self)
    end
  end
end