class Riml::AST_Rewriter::ObjectInstantiationToCall

Public Instance Methods

match?(node) click to toggle source
# File lib/riml/ast_rewriter.rb, line 865
def match?(node)
  ObjectInstantiationNode === node
end
replace(node) click to toggle source
# File lib/riml/ast_rewriter.rb, line 869
def replace(node)
  constructor_name = (node.call_node.scope_modifier ||
                      ClassDefinitionNode::DEFAULT_SCOPE_MODIFIER) +
                      node.call_node.name
  class_node = classes[constructor_name]
  call_node = node.call_node
  call_node.name = class_node.constructor_name
  call_node.scope_modifier = class_node.constructor.scope_modifier
  # FIXME: `replace_with` doesn't take into account this scenario!
  if CallNode === node.parent && node.parent.arguments.include?(node)
    idx = node.parent.arguments.index(node)
    node.parent.arguments[idx] = call_node
  else
    node.replace_with(call_node)
  end
end