class DependencyAnalyzer

Public Class Methods

new() click to toggle source
# File lib/dependency_analyzer.rb, line 4
def initialize
  @graph = Courgette::DirectoryAnalyser.new.tap { |da| da.analyse('**/*.rb') }.graph
  @stats = @graph.nodes.map { |node| { :in => @graph.dependency_count(node), :out => @graph.depender_count(node), :name => node.join("::") } }
end

Public Instance Methods

get_in_stats(n) click to toggle source
# File lib/dependency_analyzer.rb, line 9
def get_in_stats(n)
  get_stats(maybe_take(@stats.sort { |a, b| b[:in] <=> a[:in] }, n), :in)
end
get_out_stats(n) click to toggle source
# File lib/dependency_analyzer.rb, line 13
def get_out_stats(n)
  get_stats(maybe_take(@stats.sort { |a, b| b[:out] <=> a[:out] }, n), :out)
end
get_stats(stat_array, stat_index) click to toggle source
# File lib/dependency_analyzer.rb, line 17
def get_stats(stat_array, stat_index)
  stat_array.map { |x| "#{x[stat_index]} #{x[:name]}" }.join("\n")
end

Private Instance Methods

maybe_take(array, n) click to toggle source
# File lib/dependency_analyzer.rb, line 22
def maybe_take(array, n)
  if n
    array.take(n)
  else
    array
  end
end