class PairSee::CardsPerPerson

Attributes

cards_per_person[R]
dev_pairs[R]
people[R]

Public Class Methods

new(log_lines, card_prefix, people) click to toggle source
# File lib/pair_see/cards_per_person.rb, line 5
def initialize(log_lines, card_prefix, people)
  @people = _active(people, log_lines)
  @cards_per_person = _cards_per_person(log_lines, card_prefix)
  @dev_pairs = @people.combination(2)
end

Private Instance Methods

_active(people, log_lines) click to toggle source
# File lib/pair_see/cards_per_person.rb, line 45
def _active(people, log_lines)
  people.select do |person|
    log_lines.active? person
  end
end
_cards_per_person(log_lines, card_prefix) click to toggle source
# File lib/pair_see/cards_per_person.rb, line 13
def _cards_per_person(log_lines, card_prefix)
  all = _people_hash
  _populate_card_numbers(all, log_lines, card_prefix)
  _unique_cards_per_person(all)
  _sort_by_cards_count(all)
end
_people_hash() click to toggle source
# File lib/pair_see/cards_per_person.rb, line 41
def _people_hash
  Hash[people.map { |key, _| [key, []] }]
end
_populate_card_numbers(all, log_lines, card_prefix) click to toggle source
# File lib/pair_see/cards_per_person.rb, line 31
def _populate_card_numbers(all, log_lines, card_prefix)
  log_lines.each do |log_line| # loop through the biggest list only once
    all.each do |person, _|
      if log_line.authored_by? person
        all[person] << log_line.card_number(card_prefix)
      end
    end
  end
end
_sort_by_cards_count(all) click to toggle source
# File lib/pair_see/cards_per_person.rb, line 20
def _sort_by_cards_count(all)
  all.sort_by { |_, card_names| card_names.count }.map do |person, card_names|
    sorted = card_names.compact.sort_by(&:to_i)
    "#{person}: [#{card_names.size} cards] #{sorted.join(', ')}"
  end
end
_unique_cards_per_person(all) click to toggle source
# File lib/pair_see/cards_per_person.rb, line 27
def _unique_cards_per_person(all)
  all.each { |_, card_names| card_names.uniq! }
end