instance method
Prism::DotVisitor#visit_parameters_node
visit_parameters_node(node)
lib/prism/dot_visitor.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.0.0/lib/prism/dot_visitor.rb, line 3532
def visit_parameters_node(node)
table = Table.new("ParametersNode")
id = node_id(node)
# 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
# optionals
if node.optionals.any?
table.field("optionals", port: true)
waypoint = "#{id}_optionals"
digraph.waypoint("#{waypoint};")
digraph.edge("#{id}:optionals -> #{waypoint};")
node.optionals.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
else
table.field("optionals", "[]")
end
# rest
unless (rest = node.rest).nil?
table.field("rest", port: true)
digraph.edge("#{id}:rest -> #{node_id(rest)};")
end
# posts
if node.posts.any?
table.field("posts", port: true)
waypoint = "#{id}_posts"
digraph.waypoint("#{waypoint};")
digraph.edge("#{id}:posts -> #{waypoint};")
node.posts.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
else
table.field("posts", "[]")
end
# keywords
if node.keywords.any?
table.field("keywords", port: true)
waypoint = "#{id}_keywords"
digraph.waypoint("#{waypoint};")
digraph.edge("#{id}:keywords -> #{waypoint};")
node.keywords.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
else
table.field("keywords", "[]")
end
# keyword_rest
unless (keyword_rest = node.keyword_rest).nil?
table.field("keyword_rest", port: true)
digraph.edge("#{id}:keyword_rest -> #{node_id(keyword_rest)};")
end
# block
unless (block = node.block).nil?
table.field("block", port: true)
digraph.edge("#{id}:block -> #{node_id(block)};")
end
digraph.nodes << <<~DOT
#{id} [
label=<#{table.to_dot.gsub(/\n/, "\n ")}>
];
DOT
super
end
Visit a ParametersNode node.