Class: PairSee::CardsPerPerson

Inherits:
Object
  • Object
show all
Defined in:
lib/pair_see/cards_per_person.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(log_lines, options) ⇒ CardsPerPerson

Returns a new instance of CardsPerPerson.



5
6
7
8
9
# File 'lib/pair_see/cards_per_person.rb', line 5

def initialize(log_lines, options)
  @log_lines = log_lines
  @options = options
  @devs = _active(options[:names])
end

Instance Attribute Details

#devsObject (readonly)

Returns the value of attribute devs.



3
4
5
# File 'lib/pair_see/cards_per_person.rb', line 3

def devs
  @devs
end

Instance Method Details

#_active(devs) ⇒ Object



33
34
35
36
37
# File 'lib/pair_see/cards_per_person.rb', line 33

def _active(devs)
  devs.select do |dev|
    _is_active?(dev)
  end
end

#_cards_dev_worked_on(log_lines, dev) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/pair_see/cards_per_person.rb', line 25

def _cards_dev_worked_on(log_lines, dev)
  log_lines.select do |log_line|
    log_line.authored_by?(dev)
  end.map do |log_line|
    log_line.card_number(@options[:card_prefix])
  end.compact
end

#_is_active?(dev) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/pair_see/cards_per_person.rb', line 39

def _is_active?(dev)
  @log_lines.active? dev
end

#cards_per_personObject



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/pair_see/cards_per_person.rb', line 11

def cards_per_person
  @devs.map do |dev|
    {dev => _cards_dev_worked_on(@log_lines, dev)}
  end.inject({}) do |result, element|
    result.merge(element)
  end.map do |dev_name, cards_worked|
    {dev_name => cards_worked.uniq}
  end.inject({}) do |result, element|
    result.merge(element)
  end.map do |dev, cards|
    "#{dev}: [#{cards.size} cards] #{cards.sort.join(', ')}"
  end
end