instance method
Prism::DotVisitor#visit_case_node
visit_case_node(node)
lib/prism/dot_visitor.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.0.0/lib/prism/dot_visitor.rb, line 943
def visit_case_node(node)
table = Table.new("CaseNode")
id = node_id(node)
# predicate
unless (predicate = node.predicate).nil?
table.field("predicate", port: true)
digraph.edge("#{id}:predicate -> #{node_id(predicate)};")
end
# conditions
if node.conditions.any?
table.field("conditions", port: true)
waypoint = "#{id}_conditions"
digraph.waypoint("#{waypoint};")
digraph.edge("#{id}:conditions -> #{waypoint};")
node.conditions.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
else
table.field("conditions", "[]")
end
# else_clause
unless (else_clause = node.else_clause).nil?
table.field("else_clause", port: true)
digraph.edge("#{id}:else_clause -> #{node_id(else_clause)};")
end
# case_keyword_loc
table.field("case_keyword_loc", location_inspect(node.case_keyword_loc))
# end_keyword_loc
table.field("end_keyword_loc", location_inspect(node.end_keyword_loc))
digraph.nodes << <<~DOT
#{id} [
label=<#{table.to_dot.gsub(/\n/, "\n ")}>
];
DOT
super
end
Visit a CaseNode node.