1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
# frozen_string_literal: true
module Unparser
class Emitter
# Emitter control flow modifiers
class FlowModifier < self
MAP = {
return: 'return',
next: 'next',
break: 'break'
}.freeze
private_constant(*constants(false))
handle(*MAP.keys)
def emit_heredoc_reminders
children.each do |node|
emitter(node).emit_heredoc_reminders
end
end
private
def dispatch
write(MAP.fetch(node.type))
if children.one? && n_if?(children.first)
ws
emitter(children.first).emit_ternary
else
emit_arguments unless children.empty?
end
end
def emit_arguments
ws
delimited(children)
end
end # Return
end # Emitter
end # Unparser
|