class Hellgrid::Matrix

Attributes

projects[R]

Public Class Methods

new() click to toggle source
# File lib/hellgrid/matrix.rb, line 5
def initialize
  @projects = []
end

Public Instance Methods

add_project(project) click to toggle source
# File lib/hellgrid/matrix.rb, line 9
def add_project(project)
  @projects << project
end
gem_names() click to toggle source
# File lib/hellgrid/matrix.rb, line 21
def gem_names
  @projects.map { |p| p.dependency_matrix.keys }.flatten.uniq
end
gems_by_usage() click to toggle source
# File lib/hellgrid/matrix.rb, line 35
def gems_by_usage
  gem_usage = Hash.new(0)

  projects.each do |project|
    project.dependency_matrix.each do |gem, _|
      gem_usage[gem] += 1
    end
  end

  gem_usage.sort_by {|key, value| [-value, key] }.to_h
end
project_names() click to toggle source
# File lib/hellgrid/matrix.rb, line 17
def project_names
  projects_sorted_by_name.map(&:name)
end
projects_sorted_by_name() click to toggle source
# File lib/hellgrid/matrix.rb, line 13
def projects_sorted_by_name
  @projects.sort { |a,b| a.name <=> b.name }
end
sorted_by_most_used() click to toggle source
# File lib/hellgrid/matrix.rb, line 25
def sorted_by_most_used
  header = [nil] + project_names

  body = gems_by_usage.keys.map do |gem|
    [gem] + projects_sorted_by_name.map { |project| project.dependency_matrix[gem] }
  end

  [header] + body
end