Class: Riml::AST_Rewriter::VarEqualsComparisonOperator
- Inherits:
-
Riml::AST_Rewriter
- Object
- Riml::AST_Rewriter
- Riml::AST_Rewriter::VarEqualsComparisonOperator
- Defined in:
- lib/ast_rewriter.rb
Constant Summary collapse
- COMPARISON_OPERATOR_MATCH =
Regexp.union(COMPARISON_OPERATORS)
Constants included from Constants
Constants::BUILTIN_COMMANDS, Constants::BUILTIN_FUNCTIONS, Constants::COMPARISON_OPERATORS, Constants::DEFINE_KEYWORDS, Constants::END_KEYWORDS, Constants::IGNORECASE_CAPABLE_OPERATORS, Constants::KEYWORDS, Constants::REGISTERS, Constants::RIML_COMMANDS, Constants::RIML_END_KEYWORDS, Constants::RIML_KEYWORDS, Constants::SPECIAL_VARIABLE_PREFIXES, Constants::SPLAT_LITERAL, Constants::VIML_COMMANDS, Constants::VIML_END_KEYWORDS, Constants::VIML_KEYWORDS
Instance Attribute Summary
Attributes inherited from Riml::AST_Rewriter
#ast, #classes, #rewritten_included_and_sourced_files
Instance Method Summary collapse
Methods inherited from Riml::AST_Rewriter
#add_SID_function!, #add_SID_function?, #do_establish_parents, #do_rewrite_on_match, #establish_parents, #initialize, #recursive?, #rewrite, #rewrite_included_and_sourced_files!, #rewrite_on_match
Constructor Details
This class inherits a constructor from Riml::AST_Rewriter
Instance Method Details
#match?(node) ⇒ Boolean
170 171 172 173 174 175 |
# File 'lib/ast_rewriter.rb', line 170 def match?(node) Nodes === node && AssignNode === node.nodes[0] && BinaryOperatorNode === (op = node.nodes[0].rhs) && op.operator =~ COMPARISON_OPERATOR_MATCH end |
#replace(node) ⇒ Object
177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# File 'lib/ast_rewriter.rb', line 177 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 |