class Riml::AST_Rewriter::DeserializeVarAssignment

Public Instance Methods

match?(node) click to toggle source
# File lib/riml/ast_rewriter.rb, line 975
def match?(node)
  AssignNode === node && AssignNode === node.rhs && node.operator == '='
end
replace(node) click to toggle source
# File lib/riml/ast_rewriter.rb, line 979
def replace(node)
  orig_assign = node.dup
  assigns = []
  while assign_node = (AssignNode === node && node.rhs)
    assigns.unshift([node.lhs, node.rhs])
    node = assign_node
  end
  assigns = assigns[0..0].concat(assigns[1..-1].map! { |(lhs, rhs)| [lhs, rhs.lhs] })

  assigns.map! do |(lhs, rhs)|
    AssignNode.new('=', lhs, rhs)
  end

  new_assigns = Nodes.new(assigns)
  new_assigns.parent = orig_assign.parent
  orig_assign.replace_with(new_assigns)
  establish_parents(new_assigns)
end