class Git::Lint::Analyzers::CommitTrailerCollaboratorName

Public Class Methods

defaults() click to toggle source
# File lib/git/lint/analyzers/commit_trailer_collaborator_name.rb, line 7
def self.defaults
  {
    enabled: true,
    severity: :error,
    minimum: 2
  }
end
new(commit:, settings: self.class.defaults, parser: Parsers::Trailers::Collaborator, validator: Validators::Name) click to toggle source

rubocop:disable Metrics/ParameterLists

Calls superclass method Git::Lint::Analyzers::Abstract::new
# File lib/git/lint/analyzers/commit_trailer_collaborator_name.rb, line 16
def initialize commit:,
               settings: self.class.defaults,
               parser: Parsers::Trailers::Collaborator,
               validator: Validators::Name

  super commit: commit, settings: settings
  @parser = parser
  @validator = validator
end

Public Instance Methods

invalid_line?(line) click to toggle source
# File lib/git/lint/analyzers/commit_trailer_collaborator_name.rb, line 40
def invalid_line? line
  collaborator = parser.new line
  collaborator.match? && !validator.new(collaborator.name.strip, minimum: minimum).valid?
end
issue() click to toggle source
# File lib/git/lint/analyzers/commit_trailer_collaborator_name.rb, line 29
def issue
  return {} if valid?

  {
    hint: "Name must follow key and consist of #{minimum} parts (minimum).",
    lines: affected_commit_trailers
  }
end
minimum(= settings.fetch(:minimum)) click to toggle source
# File lib/git/lint/analyzers/commit_trailer_collaborator_name.rb, line 49
  def minimum = settings.fetch(:minimum)
end
valid?(= affected_commit_trailers.empty?) click to toggle source

rubocop:enable Metrics/ParameterLists

# File lib/git/lint/analyzers/commit_trailer_collaborator_name.rb, line 27
    def valid? = affected_commit_trailers.empty?

    def issue
      return {} if valid?

      {
        hint: "Name must follow key and consist of #{minimum} parts (minimum).",
        lines: affected_commit_trailers
      }
    end

    protected

    def invalid_line? line
      collaborator = parser.new line
      collaborator.match? && !validator.new(collaborator.name.strip, minimum: minimum).valid?
    end

    private

    attr_reader :parser, :validator

    def minimum = settings.fetch(:minimum)
  end
end