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 43
|
# frozen_string_literal: true
module Unparser
module Writer
class Rescue
include Writer, Adamantium
children :body, :rescue_body
define_group :rescue_bodies, 1..-2
def emit_regular
emit_optional_body(body)
rescue_bodies.each(&method(:emit_rescue_body))
if else_node
write('else')
emit_body(else_node)
end
end
def emit_heredoc_reminders
emitter(body).emit_heredoc_reminders
end
def emit_postcontrol
visit(body)
writer_with(Resbody, rescue_body).emit_postcontrol
end
private
def else_node
children.last
end
def emit_rescue_body(node)
writer_with(Resbody, node).emit_regular
end
end # Rescue
end # Writer
end # Unparser
|