Class: PairSee::TooMuchStuff
- Inherits:
-
Object
- Object
- PairSee::TooMuchStuff
- Defined in:
- lib/pair_see/too_much_stuff.rb
Instance Method Summary collapse
- #a(log_line, person1, person2) ⇒ Object
- #all_commits ⇒ Object
- #all_most_recent_commits ⇒ Object
- #b(log_line, person1) ⇒ Object
- #card_data(card_prefixes) ⇒ Object
- #card_numbers(card_prefix) ⇒ Object
- #commits_for_pair(person1, person2) ⇒ Object
- #commits_not_by_known_person ⇒ Object
- #commits_on_card(card_name) ⇒ Object
- #get_card_prefix(config_file) ⇒ Object
-
#initialize(options) ⇒ TooMuchStuff
constructor
A new instance of TooMuchStuff.
- #is_solo_by?(devs, person, log_line) ⇒ Boolean
- #least_recent_pair ⇒ Object
- #method_name(ll, result) ⇒ Object
- #most_recent_commit_date(person1, person2) ⇒ Object
- #names_key(k, v) ⇒ Object
- #pair_commits ⇒ Object
- #pretty_card_data ⇒ Object
- #pretty_card_data_by_commits ⇒ Object
- #recommended_pairings ⇒ Object
- #solo_commits ⇒ Object
- #unpaired_in_range ⇒ Object
Constructor Details
#initialize(options) ⇒ TooMuchStuff
Returns a new instance of TooMuchStuff.
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/pair_see/too_much_stuff.rb', line 13 def initialize() @log_lines = LogLineParse.new([:repo_locations], [:after_date]).log_lines @active_devs = ActiveDevs.new(@log_lines, [:names]).devs cards_per_person = CardsPerPerson.new(@log_lines, [:card_prefix], [:names]) @devs = cards_per_person.people @dev_pairs = cards_per_person.dev_pairs @card_prefixes = [:card_prefix] end |
Instance Method Details
#a(log_line, person1, person2) ⇒ Object
115 116 117 |
# File 'lib/pair_see/too_much_stuff.rb', line 115 def a(log_line, person1, person2) log_line.(person1, person2) end |
#all_commits ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/pair_see/too_much_stuff.rb', line 72 def all_commits pairs_result = Hash[@dev_pairs.map { |k, v| [names_key(k, v), 0] }] solos_result = Hash[@devs.map { |k| [k.display_name, 0] }] result = pairs_result.merge solos_result @log_lines.each do |ll| result = method_name(ll, result) end result .sort_by { |_, count| count } .reject { |_, count| count == 0 } .map { |names, count| "#{names}: #{count}" } end |
#all_most_recent_commits ⇒ Object
132 133 134 135 136 |
# File 'lib/pair_see/too_much_stuff.rb', line 132 def all_most_recent_commits @dev_pairs.map do |person1, person2| DateCombo.new(most_recent_commit_date(person1, person2), person1, person2) end.sort.reverse.map &:to_s end |
#b(log_line, person1) ⇒ Object
111 112 113 |
# File 'lib/pair_see/too_much_stuff.rb', line 111 def b(log_line, person1) log_line.(person1) && (people - [person1]).none? { |single_person| log_line.(single_person) } end |
#card_data(card_prefixes) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/pair_see/too_much_stuff.rb', line 34 def card_data(card_prefixes) card_prefixes.map do |card_prefix| card_numbers(card_prefix).map do |card_name| Card.new(card_name, commits_on_card(card_name).sort_by(&:date)) end end.flatten.sort_by(&:duration).reverse end |
#card_numbers(card_prefix) ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/pair_see/too_much_stuff.rb', line 46 def card_numbers(card_prefix) @log_lines.select do |line| line.contains_card?(card_prefix) end.map do |line| line.card_name([card_prefix]) end.uniq.compact end |
#commits_for_pair(person1, person2) ⇒ Object
119 120 121 |
# File 'lib/pair_see/too_much_stuff.rb', line 119 def commits_for_pair(person1, person2) @log_lines.commits_for_pair person1, person2 end |
#commits_not_by_known_person ⇒ Object
123 124 125 |
# File 'lib/pair_see/too_much_stuff.rb', line 123 def commits_not_by_known_person @log_lines.commits_not_by_known_person @devs end |
#commits_on_card(card_name) ⇒ Object
42 43 44 |
# File 'lib/pair_see/too_much_stuff.rb', line 42 def commits_on_card(card_name) @log_lines.select { |line| line.contains_card_name?(card_name) } end |
#get_card_prefix(config_file) ⇒ Object
54 55 56 57 |
# File 'lib/pair_see/too_much_stuff.rb', line 54 def get_card_prefix(config_file) config = YAML.load_file(config_file) config['card_prefix'] end |
#is_solo_by?(devs, person, log_line) ⇒ Boolean
102 103 104 105 |
# File 'lib/pair_see/too_much_stuff.rb', line 102 def is_solo_by?(devs, person, log_line) no_other_devs_in_commit = (devs - [person]).none? { |dx| log_line.(dx) } log_line.(person) && no_other_devs_in_commit end |
#least_recent_pair ⇒ Object
143 144 145 146 147 |
# File 'lib/pair_see/too_much_stuff.rb', line 143 def least_recent_pair devs.select do |person| person.names.any? { |name| @log_lines.last.line.match(name) } end.map(&:display_name).join(', ') end |
#method_name(ll, result) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/pair_see/too_much_stuff.rb', line 86 def method_name(ll, result) @dev_pairs.each do |d1, d2| if ll.(d1, d2) result[names_key(d1, d2)] += 1 return result elsif is_solo_by?(@devs, d1, ll) result[d1.display_name] += 1 return result elsif is_solo_by?(@devs, d2, ll) result[d2.display_name] += 1 return result end end result end |
#most_recent_commit_date(person1, person2) ⇒ Object
127 128 129 130 |
# File 'lib/pair_see/too_much_stuff.rb', line 127 def most_recent_commit_date(person1, person2) recent_commit = commits_for_pair(person1, person2).sort_by(&:date).first recent_commit ? recent_commit.date : nil end |
#names_key(k, v) ⇒ Object
107 108 109 |
# File 'lib/pair_see/too_much_stuff.rb', line 107 def names_key(k, v) [k, v].sort_by(&:display_name).map(&:to_s).join(', ') end |
#pair_commits ⇒ Object
59 60 61 62 63 64 |
# File 'lib/pair_see/too_much_stuff.rb', line 59 def pair_commits @dev_pairs.map do |person1, person2| log_lines_commits_for_pair = @log_lines.commits_for_pair person1, person2 PairCommitCount.new(log_lines_commits_for_pair.count, person1, person2) end end |
#pretty_card_data ⇒ Object
24 25 26 27 28 |
# File 'lib/pair_see/too_much_stuff.rb', line 24 def pretty_card_data card_data(@card_prefixes).map do |card| card&.pretty end end |
#pretty_card_data_by_commits ⇒ Object
30 31 32 |
# File 'lib/pair_see/too_much_stuff.rb', line 30 def pretty_card_data_by_commits card_data(@card_prefixes).compact.sort_by.sort_by(&:number_of_commits).reverse.map(&:pretty) end |
#recommended_pairings ⇒ Object
138 139 140 141 |
# File 'lib/pair_see/too_much_stuff.rb', line 138 def recommended_pairings should_pair = unpaired_in_range should_pair.empty? ? [least_recent_pair] : should_pair end |
#solo_commits ⇒ Object
66 67 68 69 70 |
# File 'lib/pair_see/too_much_stuff.rb', line 66 def solo_commits @devs.map do |dev| PairCommitCount.new(@log_lines.solo_commits(@devs, dev).count, dev) end end |
#unpaired_in_range ⇒ Object
149 150 151 152 153 154 155 |
# File 'lib/pair_see/too_much_stuff.rb', line 149 def unpaired_in_range @dev_pairs.select do |person1, person2| most_recent_commit_date(person1, person2).nil? end.map do |person1, person2| "#{person1}, #{person2}" end end |