Sha256: 892c8c7c3092aeaf42fd82344afea5d8f5835a5a516f965e6c6940a93f0387b3

Contents?: true

Size: 1.11 KB

Versions: 3

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true

require "refinements/hashes"

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

      def initialize
        @collection = Hash.new { |default, missing_id| default[missing_id] = [] }
      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

3 entries across 3 versions & 1 rubygems

Version Path
git-lint-2.2.1 lib/git/lint/collector.rb
git-lint-2.2.0 lib/git/lint/collector.rb
git-lint-2.1.0 lib/git/lint/collector.rb