class Targets
Visualize target-level dependencies.
Nested
Definitions
def process(selection)
Process and generate the target dependency visualization.
Signature
-
parameter
selectionSelect The selection to visualize.
-
returns
String The generated Mermaid diagram.
Implementation
def process(selection)
lines = ["flowchart LR"]
lines << ""
# Build the graph from all targets in the selection
# The selection contains all targets loaded from packages
selection.targets.each do |name, target|
target.dependencies.each do |dependency|
dependency_name = dependency.name.to_s
# Create edge from target to its dependency
if dependency.private?
lines << " #{sanitize_id(name)}[#{name}] -.-> #{sanitize_id(dependency_name)}[#{dependency_name}]"
else
lines << " #{sanitize_id(name)}[#{name}] --> #{sanitize_id(dependency_name)}[#{dependency_name}]"
end
end
end
diagram = lines.join("\n")
if output_path = @options[:output_path]
File.write(output_path, diagram)
else
$stdout.puts diagram
end
return diagram
end
def sanitize_id(name)
Convert a name to a valid Mermaid node ID.
Signature
-
parameter
nameString The name to sanitize.
-
returns
String A sanitized identifier safe for use in Mermaid diagrams.
Implementation
def sanitize_id(name)
name.to_s.gsub(/[^a-zA-Z0-9_]/, "_")
end