Class: CodeReviewLeaderboard::Reviews

Inherits:
Object
  • Object
show all
Defined in:
lib/code_review_leaderboard/reviews.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pull:, since: 30.days.ago) ⇒ Reviews



11
12
13
14
# File 'lib/code_review_leaderboard/reviews.rb', line 11

def initialize(pull:, since: 30.days.ago)
  @pull = pull
  @since = since
end

Class Method Details

.for(pull:, since: 30.days.ago) ⇒ Object



6
7
8
# File 'lib/code_review_leaderboard/reviews.rb', line 6

def for(pull:, since: 30.days.ago)
  new(pull:, since:).reviews
end

Instance Method Details

#reviewsObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/code_review_leaderboard/reviews.rb', line 16

def reviews
  puts "Fetching reviews for #{repository}##{pull.number}..." if Config.log_level == :debug

  comments, reviews =
    fetch_reviews
      .map { {user: _1.user., state: _1.state.downcase.to_sym} }
      .uniq
      .partition { _1[:state] == :commented }

  # Do not count comments if already otherwise reviewed
  comments.filter! do |commenter|
    reviews.none? { |reviewer| reviewer[:user] == commenter[:user] }
  end

  reviews + comments
end