class Git::Lint::Analyzers::Abstract

An abstract class which provides basic functionality from which all analyzers inherit from.

Constants

ISSUE_LINE_OFFSET
LEVELS

Public Class Methods

build_issue_line(index, line) click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 31
    def self.build_issue_line(index, line) = {number: index + ISSUE_LINE_OFFSET, content: line}

    attr_reader :commit

    def initialize commit:, settings: self.class.defaults
      @commit = commit
      @settings = settings
      @filter_list = load_filter_list
    end

    def enabled? = settings.fetch(:enabled)

    def severity
      settings.fetch(:severity).tap do |level|
        fail Errors::Severity, level unless LEVELS.include? level
      end
    end

    def valid?
      fail NotImplementedError, "The `##{__method__}` method must be implemented."
    end

    def invalid? = !valid?

    def warning? = invalid? && severity == :warn

    def error? = invalid? && severity == :error

    def issue
      fail NotImplementedError, "The `##{__method__}` method must be implemented."
    end

    protected

    attr_reader :settings, :filter_list

    def load_filter_list = Kit::FilterList.new(settings[:list])

    def affected_commit_body_lines
      commit.body_lines.each.with_object([]).with_index do |(line, lines), index|
        yield if block_given?
        lines << self.class.build_issue_line(index, line) if invalid_line? line
      end
    end

    def affected_commit_trailers
      commit.trailers
            .each.with_object([])
            .with_index(commit.trailers_index) do |(line, lines), index|
              yield if block_given?
              lines << self.class.build_issue_line(index, line) if invalid_line? line
            end
    end

    def invalid_line? _line
      fail NotImplementedError, "The `.#{__method__}` method must be implemented."
    end
  end
end
defaults() click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 25
def self.defaults
  fail NotImplementedError, "The `.#{__method__}` method must be implemented."
end
descendants(= @descendants || []) click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 29
  def self.descendants = @descendants || []

  def self.build_issue_line(index, line) = {number: index + ISSUE_LINE_OFFSET, content: line}

  attr_reader :commit

  def initialize commit:, settings: self.class.defaults
    @commit = commit
    @settings = settings
    @filter_list = load_filter_list
  end

  def enabled? = settings.fetch(:enabled)

  def severity
    settings.fetch(:severity).tap do |level|
      fail Errors::Severity, level unless LEVELS.include? level
    end
  end

  def valid?
    fail NotImplementedError, "The `##{__method__}` method must be implemented."
  end

  def invalid? = !valid?

  def warning? = invalid? && severity == :warn

  def error? = invalid? && severity == :error

  def issue
    fail NotImplementedError, "The `##{__method__}` method must be implemented."
  end

  protected

  attr_reader :settings, :filter_list

  def load_filter_list = Kit::FilterList.new(settings[:list])

  def affected_commit_body_lines
    commit.body_lines.each.with_object([]).with_index do |(line, lines), index|
      yield if block_given?
      lines << self.class.build_issue_line(index, line) if invalid_line? line
    end
  end

  def affected_commit_trailers
    commit.trailers
          .each.with_object([])
          .with_index(commit.trailers_index) do |(line, lines), index|
            yield if block_given?
            lines << self.class.build_issue_line(index, line) if invalid_line? line
          end
  end

  def invalid_line? _line
    fail NotImplementedError, "The `.#{__method__}` method must be implemented."
  end
end
    
id(= to_s.delete_prefix("Git::Lint::Analyzers").snakecase.to_sym) click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 21
def self.id = to_s.delete_prefix("Git::Lint::Analyzers").snakecase.to_sym

def self.label = to_s.delete_prefix("Git::Lint::Analyzers").titleize

def self.defaults
  fail NotImplementedError, "The `.#{__method__}` method must be implemented."
end

def self.descendants = @descendants || []

def self.build_issue_line(index, line) = {number: index + ISSUE_LINE_OFFSET, content: line}

attr_reader :commit

def initialize commit:, settings: self.class.defaults
  @commit = commit
  @settings = settings
  @filter_list = load_filter_list
end

def enabled? = settings.fetch(:enabled)

def severity
  settings.fetch(:severity).tap do |level|
    fail Errors::Severity, level unless LEVELS.include? level
  end
end

def valid?
  fail NotImplementedError, "The `##{__method__}` method must be implemented."
end

def invalid? = !valid?

def warning? = invalid? && severity == :warn

def error? = invalid? && severity == :error

def issue
  fail NotImplementedError, "The `##{__method__}` method must be implemented."
end

protected

attr_reader :settings, :filter_list

def load_filter_list = Kit::FilterList.new(settings[:list])

def affected_commit_body_lines
  commit.body_lines.each.with_object([]).with_index do |(line, lines), index|
    yield if block_given?
    lines << self.class.build_issue_line(index, line) if invalid_line? line
  end
end

def affected_commit_trailers
  commit.trailers
        .each.with_object([])
        .with_index(commit.trailers_index) do |(line, lines), index|
          yield if block_given?
          lines << self.class.build_issue_line(index, line) if invalid_line? line
        end
end

def invalid_line? _line
  fail NotImplementedError, "The `.#{__method__}` method must be implemented."
end
inherited(klass) click to toggle source
Calls superclass method
# File lib/git/lint/analyzers/abstract.rb, line 15
def self.inherited klass
  super
  @descendants ||= []
  @descendants << klass unless klass.to_s.start_with? "#<Class" # Ignore anonymous classes.
end
label(= to_s.delete_prefix("Git::Lint::Analyzers").titleize) click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 23
  def self.label = to_s.delete_prefix("Git::Lint::Analyzers").titleize

  def self.defaults
    fail NotImplementedError, "The `.#{__method__}` method must be implemented."
  end

  def self.descendants = @descendants || []

  def self.build_issue_line(index, line) = {number: index + ISSUE_LINE_OFFSET, content: line}

  attr_reader :commit

  def initialize commit:, settings: self.class.defaults
    @commit = commit
    @settings = settings
    @filter_list = load_filter_list
  end

  def enabled? = settings.fetch(:enabled)

  def severity
    settings.fetch(:severity).tap do |level|
      fail Errors::Severity, level unless LEVELS.include? level
    end
  end

  def valid?
    fail NotImplementedError, "The `##{__method__}` method must be implemented."
  end

  def invalid? = !valid?

  def warning? = invalid? && severity == :warn

  def error? = invalid? && severity == :error

  def issue
    fail NotImplementedError, "The `##{__method__}` method must be implemented."
  end

  protected

  attr_reader :settings, :filter_list

  def load_filter_list = Kit::FilterList.new(settings[:list])

  def affected_commit_body_lines
    commit.body_lines.each.with_object([]).with_index do |(line, lines), index|
      yield if block_given?
      lines << self.class.build_issue_line(index, line) if invalid_line? line
    end
  end

  def affected_commit_trailers
    commit.trailers
          .each.with_object([])
          .with_index(commit.trailers_index) do |(line, lines), index|
            yield if block_given?
            lines << self.class.build_issue_line(index, line) if invalid_line? line
          end
  end

  def invalid_line? _line
    fail NotImplementedError, "The `.#{__method__}` method must be implemented."
  end
end
new(commit:, settings: self.class.defaults) click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 35
def initialize commit:, settings: self.class.defaults
  @commit = commit
  @settings = settings
  @filter_list = load_filter_list
end

Public Instance Methods

affected_commit_body_lines() { || ... } click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 69
def affected_commit_body_lines
  commit.body_lines.each.with_object([]).with_index do |(line, lines), index|
    yield if block_given?
    lines << self.class.build_issue_line(index, line) if invalid_line? line
  end
end
affected_commit_trailers() { || ... } click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 76
def affected_commit_trailers
  commit.trailers
        .each.with_object([])
        .with_index(commit.trailers_index) do |(line, lines), index|
          yield if block_given?
          lines << self.class.build_issue_line(index, line) if invalid_line? line
        end
end
enabled?(= settings.fetch(:enabled)) click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 41
      def enabled? = settings.fetch(:enabled)

      def severity
        settings.fetch(:severity).tap do |level|
          fail Errors::Severity, level unless LEVELS.include? level
        end
      end

      def valid?
        fail NotImplementedError, "The `##{__method__}` method must be implemented."
      end

      def invalid? = !valid?

      def warning? = invalid? && severity == :warn

      def error? = invalid? && severity == :error

      def issue
        fail NotImplementedError, "The `##{__method__}` method must be implemented."
      end

      protected

      attr_reader :settings, :filter_list

      def load_filter_list = Kit::FilterList.new(settings[:list])

      def affected_commit_body_lines
        commit.body_lines.each.with_object([]).with_index do |(line, lines), index|
          yield if block_given?
          lines << self.class.build_issue_line(index, line) if invalid_line? line
        end
      end

      def affected_commit_trailers
        commit.trailers
              .each.with_object([])
              .with_index(commit.trailers_index) do |(line, lines), index|
                yield if block_given?
                lines << self.class.build_issue_line(index, line) if invalid_line? line
              end
      end

      def invalid_line? _line
        fail NotImplementedError, "The `.#{__method__}` method must be implemented."
      end
    end
  end
end
error?(= invalid? && severity == :error) click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 57
    def error? = invalid? && severity == :error

    def issue
      fail NotImplementedError, "The `##{__method__}` method must be implemented."
    end

    protected

    attr_reader :settings, :filter_list

    def load_filter_list = Kit::FilterList.new(settings[:list])

    def affected_commit_body_lines
      commit.body_lines.each.with_object([]).with_index do |(line, lines), index|
        yield if block_given?
        lines << self.class.build_issue_line(index, line) if invalid_line? line
      end
    end

    def affected_commit_trailers
      commit.trailers
            .each.with_object([])
            .with_index(commit.trailers_index) do |(line, lines), index|
              yield if block_given?
              lines << self.class.build_issue_line(index, line) if invalid_line? line
            end
    end

    def invalid_line? _line
      fail NotImplementedError, "The `.#{__method__}` method must be implemented."
    end
  end
end
invalid?(= !valid?) click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 53
        def invalid? = !valid?

        def warning? = invalid? && severity == :warn

        def error? = invalid? && severity == :error

        def issue
          fail NotImplementedError, "The `##{__method__}` method must be implemented."
        end

        protected

        attr_reader :settings, :filter_list

        def load_filter_list = Kit::FilterList.new(settings[:list])

        def affected_commit_body_lines
          commit.body_lines.each.with_object([]).with_index do |(line, lines), index|
            yield if block_given?
            lines << self.class.build_issue_line(index, line) if invalid_line? line
          end
        end

        def affected_commit_trailers
          commit.trailers
                .each.with_object([])
                .with_index(commit.trailers_index) do |(line, lines), index|
                  yield if block_given?
                  lines << self.class.build_issue_line(index, line) if invalid_line? line
                end
        end

        def invalid_line? _line
          fail NotImplementedError, "The `.#{__method__}` method must be implemented."
        end
      end
    end
  end
end
invalid_line?(_line) click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 85
def invalid_line? _line
  fail NotImplementedError, "The `.#{__method__}` method must be implemented."
end
issue() click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 59
def issue
  fail NotImplementedError, "The `##{__method__}` method must be implemented."
end
load_filter_list(= Kit::FilterList.new(settings[:list])) click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 67
  def load_filter_list = Kit::FilterList.new(settings[:list])

  def affected_commit_body_lines
    commit.body_lines.each.with_object([]).with_index do |(line, lines), index|
      yield if block_given?
      lines << self.class.build_issue_line(index, line) if invalid_line? line
    end
  end

  def affected_commit_trailers
    commit.trailers
          .each.with_object([])
          .with_index(commit.trailers_index) do |(line, lines), index|
            yield if block_given?
            lines << self.class.build_issue_line(index, line) if invalid_line? line
          end
  end

  def invalid_line? _line
    fail NotImplementedError, "The `.#{__method__}` method must be implemented."
  end
end
severity() click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 43
def severity
  settings.fetch(:severity).tap do |level|
    fail Errors::Severity, level unless LEVELS.include? level
  end
end
valid?() click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 49
def valid?
  fail NotImplementedError, "The `##{__method__}` method must be implemented."
end
warning?(= invalid? && severity == :warn) click to toggle source
# File lib/git/lint/analyzers/abstract.rb, line 55
      def warning? = invalid? && severity == :warn

      def error? = invalid? && severity == :error

      def issue
        fail NotImplementedError, "The `##{__method__}` method must be implemented."
      end

      protected

      attr_reader :settings, :filter_list

      def load_filter_list = Kit::FilterList.new(settings[:list])

      def affected_commit_body_lines
        commit.body_lines.each.with_object([]).with_index do |(line, lines), index|
          yield if block_given?
          lines << self.class.build_issue_line(index, line) if invalid_line? line
        end
      end

      def affected_commit_trailers
        commit.trailers
              .each.with_object([])
              .with_index(commit.trailers_index) do |(line, lines), index|
                yield if block_given?
                lines << self.class.build_issue_line(index, line) if invalid_line? line
              end
      end

      def invalid_line? _line
        fail NotImplementedError, "The `.#{__method__}` method must be implemented."
      end
    end
  end
end