Module: Nanahoshi::Info

Defined in:
lib/nanahoshi/info.rb

Class Method Summary collapse

Class Method Details

.nodes_and_edgesObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/nanahoshi/info.rb', line 4

def nodes_and_edges
  graph = load_graph
  gem_names = graph.keys

  nodes = gem_names.map{|gn|{name: gn, type: [:start_leaf, :end_leaf]}}

  edges = []
  graph.each do |gem_name, deps|
    source_index = gem_names.index(gem_name)
    unless deps.empty?
      nodes[source_index][:type].delete(:end_leaf)
    end
    dependence_edges = deps.map do |dep|
      target_index = gem_names.index(dep)
      nodes[target_index][:type].delete(:start_leaf)
      {source: source_index, target: target_index}
    end
    edges.concat(dependence_edges)
  end
  [nodes, edges]
end