Class: GraphVisualiser
- Inherits:
-
Object
- Object
- GraphVisualiser
- Defined in:
- lib/cpp_dependency_graph/graph_visualiser.rb
Instance Method Summary collapse
Instance Method Details
#generate_dot_file(deps, file) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/cpp_dependency_graph/graph_visualiser.rb', line 7 def generate_dot_file(deps, file) @g = Graphviz::Graph.new(name = 'dependency_graph') node_names = deps.flat_map do |_, links| links.map { |link| [link.source, link.target] }.flatten end.uniq nodes = node_names.map { |name| [name, create_node(name)] }.to_h deps.each do |source, links| links.each do |link| connection = nodes[source].connect(nodes[link.target]) connection.attributes[:color] = 'red' if link.cyclic? end end File.write(file, @g.to_dot) # Graphviz::output(g, path: 'file') # TODO: https://github.com/ioquatix/graphviz/issues/7 end |
#generate_html_file(deps, file) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/cpp_dependency_graph/graph_visualiser.rb', line 26 def generate_html_file(deps, file) node_names = deps.flat_map do |_, links| links.map { |link| [link.source, link.target] }.flatten end.uniq nodes = node_names.map { |name| { name: name } } connections = deps.flat_map do |_, links| links.map do |link| { source: link.source, dest: link.target } end end json_nodes = JSON.pretty_generate(nodes) json_connections = JSON.pretty_generate(connections) # File.write(file, json_nodes + json_connections) template_file = resolve_file_path('views/index.html.template') template = File.read(template_file) contents = template % { dependency_links: json_connections } File.write(file, contents) end |