instance method
Prism::DotVisitor#visit_find_pattern_node
visit_find_pattern_node(node)
lib/prism/dot_visitor.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.0.0/lib/prism/dot_visitor.rb, line 1701
def visit_find_pattern_node(node)
table = Table.new("FindPatternNode")
id = node_id(node)
# constant
unless (constant = node.constant).nil?
table.field("constant", port: true)
digraph.edge("#{id}:constant -> #{node_id(constant)};")
end
# left
table.field("left", port: true)
digraph.edge("#{id}:left -> #{node_id(node.left)};")
# requireds
if node.requireds.any?
table.field("requireds", port: true)
waypoint = "#{id}_requireds"
digraph.waypoint("#{waypoint};")
digraph.edge("#{id}:requireds -> #{waypoint};")
node.requireds.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
else
table.field("requireds", "[]")
end
# right
table.field("right", port: true)
digraph.edge("#{id}:right -> #{node_id(node.right)};")
# opening_loc
unless (opening_loc = node.opening_loc).nil?
table.field("opening_loc", location_inspect(opening_loc))
end
# closing_loc
unless (closing_loc = node.closing_loc).nil?
table.field("closing_loc", location_inspect(closing_loc))
end
digraph.nodes << <<~DOT
#{id} [
label=<#{table.to_dot.gsub(/\n/, "\n ")}>
];
DOT
super
end
Visit a FindPatternNode node.