class Milestoner::Commits::Enrichers::Colleague

Enriches a commit colleague by using cache.

Public Class Methods

new(key:, parser: Gitt::Parsers::Person.new, **) click to toggle source
Calls superclass method
# File lib/milestoner/commits/enrichers/colleague.rb, line 12
def initialize(key:, parser: Gitt::Parsers::Person.new, **)
  @key = key
  @parser = parser
  super(**)
end

Public Instance Methods

call(commit) click to toggle source
# File lib/milestoner/commits/enrichers/colleague.rb, line 18
    def call(commit) = commit.find_trailers(key).bind { |trailers| users_for(trailers).compact }

    private

    attr_reader :key, :parser

    def users_for(trailers) = trailers.map { |trailer| user_for parser.call(trailer.value) }

    def user_for person
      cache.read(:users) { find person.name }
           .value_or(nil)
    end
  end
end
user_for(person) click to toggle source
# File lib/milestoner/commits/enrichers/colleague.rb, line 26
def user_for person
  cache.read(:users) { find person.name }
       .value_or(nil)
end
users_for(trailers) click to toggle source
# File lib/milestoner/commits/enrichers/colleague.rb, line 24
  def users_for(trailers) = trailers.map { |trailer| user_for parser.call(trailer.value) }

  def user_for person
    cache.read(:users) { find person.name }
         .value_or(nil)
  end
end