class Riml::AST_Rewriter::VarEqualsComparisonOperator

Constants

COMPARISON_OPERATOR_MATCH

Public Instance Methods

match?(node) click to toggle source
# File lib/riml/ast_rewriter.rb, line 371
def match?(node)
  Nodes === node &&
  AssignNode === node.nodes[0] &&
  BinaryOperatorNode === (op = node.nodes[0].rhs) &&
  op.operator =~ COMPARISON_OPERATOR_MATCH
end
replace(node) click to toggle source
# File lib/riml/ast_rewriter.rb, line 378
def replace(node)
  binary_op = node.nodes[0].rhs
  old_set_var = node.nodes[0]
  assign_true  = old_set_var.dup.tap {|assign_t| assign_t.rhs = TrueNode.new}
  assign_false = old_set_var.dup.tap {|assign_f| assign_f.rhs = FalseNode.new}
  node.nodes = [
    IfNode.new(binary_op, Nodes.new([
      assign_true, ElseNode.new(Nodes.new([
      assign_false
      ]))
    ]))
  ]
  reestablish_parents(node)
end