class Depdump::DependencyGraph

Attributes

edges[R]
nodes[R]

Public Class Methods

new(tree) click to toggle source
# File lib/depdump/dependency_graph.rb, line 7
def initialize(tree)
  @nodes = Set.new
  @edges = Set.new
  build(tree)
end

Public Instance Methods

build(tree) click to toggle source
# File lib/depdump/dependency_graph.rb, line 13
def build(tree)
  tree.each_node do |node|
    next if node == tree.root

    @nodes << node
    node.relations.each do |r|
      referenced_namespaces = r.resolve(tree)
      if referenced_namespaces
        @edges << { from: node.namespaces, to: referenced_namespaces }
      else
        # TODO: Show file path and line no.
        warn "[skip] cannot resolve: #{node.namespaces} => #{r.reference}"
      end
    end
  end
end
format() click to toggle source
# File lib/depdump/dependency_graph.rb, line 30
def format
  Depdump.config.formatter.call(nodes, edges)
end