class DissociatedIntrospection::MethodInLiner::InLiner

Attributes

defs[RW]

Public Instance Methods

called_method(method_name) click to toggle source
# File lib/dissociated_introspection/method_in_liner.rb, line 44
def called_method(method_name)
  defs.detect { |_def| _def.name == method_name }
end
called_on_self?(called_on) click to toggle source
# File lib/dissociated_introspection/method_in_liner.rb, line 40
def called_on_self?(called_on)
  called_on.nil? || called_on.type == :self
end
in_line_calls(node) click to toggle source
# File lib/dissociated_introspection/method_in_liner.rb, line 30
def in_line_calls(node)
  called_on, method_name, *args = *node
  # TODO: Deal with args by replacing lvar with passed objects
  return unless args.empty? && called_on_self?(called_on)
  called_method = called_method(method_name)
  return unless called_method
  processed_called_method = process(called_method.body.ast)
  node.updated(processed_called_method.type, processed_called_method.children)
end
on_send(node) click to toggle source
Calls superclass method
# File lib/dissociated_introspection/method_in_liner.rb, line 22
def on_send(node)
  if (result = in_line_calls(node))
    result
  else
    super
  end
end