Sha256: 2ac8b503bafed25ec758a1681fd155f54cb75ae4423b919ad7358270c767c99a

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

require "refinements/hashes"

module Git
  module Lint
    class Collector
      using ::Refinements::Hashes

      def initialize
        @collection = Hash.with_default []
      end

      def add analyzer
        collection[analyzer.commit] << analyzer
        analyzer
      end

      def retrieve id
        collection[id]
      end

      def empty?
        collection.empty?
      end

      def warnings?
        collection.values.flatten.any?(&:warning?)
      end

      def errors?
        collection.values.flatten.any?(&:error?)
      end

      def issues?
        collection.values.flatten.any?(&:invalid?)
      end

      def total_warnings
        collection.values.flatten.count(&:warning?)
      end

      def total_errors
        collection.values.flatten.count(&:error?)
      end

      def total_issues
        collection.values.flatten.count(&:invalid?)
      end

      def total_commits
        collection.keys.size
      end

      def to_h
        collection
      end

      private

      attr_reader :collection
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
git-lint-2.0.0 lib/git/lint/collector.rb