class GraphToSvgVisualiser
Outputs a `dot` language representation of a dependency graph
Public Instance Methods
generate(deps, file)
click to toggle source
# File lib/cpp_dependency_graph/graph_to_svg_visualiser.rb, line 7 def generate(deps, file) @g = GraphViz.new('dependency_graph') create_nodes(deps) connect_nodes(deps) @g.output(svg: file) end
Private Instance Methods
add_node(name)
click to toggle source
# File lib/cpp_dependency_graph/graph_to_svg_visualiser.rb, line 25 def add_node(name) @g.add_node(name, shape: 'box3d') end
connect_nodes(deps)
click to toggle source
# File lib/cpp_dependency_graph/graph_to_svg_visualiser.rb, line 29 def connect_nodes(deps) deps.each do |source, links| links.each do |link| if link.cyclic? @g.add_edges(source, link.target, color: 'red') else @g.add_edges(source, link.target) end end end end
create_nodes(deps)
click to toggle source
# File lib/cpp_dependency_graph/graph_to_svg_visualiser.rb, line 16 def create_nodes(deps) node_names = deps.flat_map do |_, links| links.map { |link| [link.source, link.target] }.flatten end.uniq node_names.each do |name| add_node(name) end end