lib/unparser/emitter/op_assign.rb in unparser-0.4.9 vs lib/unparser/emitter/op_assign.rb in unparser-0.5.0

- old
+ new

@@ -3,64 +3,49 @@ module Unparser class Emitter # Base class for and and or op-assign class BinaryAssign < self - include Unterminated - children :target, :expression MAP = IceNine.deep_freeze( and_asgn: '&&=', or_asgn: '||=' ) handle(*MAP.keys) + def emit_heredoc_reminders + emitter(target).emit_heredoc_reminders + emitter(expression).emit_heredoc_reminders + end + private - # Perform dispatch - # - # @return [undefined] - # - # @api private - # def dispatch - visit(target) - write(WS, MAP.fetch(node.type), WS) + emitter(target).emit_mlhs + write(' ', MAP.fetch(node.type), ' ') visit(expression) end end # BinaryAssign # Emitter for op assign class OpAssign < self - include Unterminated - handle :op_asgn + children :target, :operator, :value + private - # Perform dispatch - # - # @return [undefined] - # - # @api private - # def dispatch - visit(first_child) + emitter(first_child).emit_mlhs emit_operator - visit(children[2]) + visit(value) end - # Emit operator - # - # @return [undefined] - # - # @api private - # def emit_operator - write(WS, children[1].to_s, T_ASN, WS) + write(' ', operator.to_s, '= ') end end # OpAssign end # Emitte end # Unparser