Sha256: 2666d6124732e7ab1d7923988109aa95838f6bf1072321df3a3146fb9309407b

Contents?: true

Size: 687 Bytes

Versions: 1

Compression:

Stored size: 687 Bytes

Contents

# frozen_string_literal: true

module GitDiff
  class StatsCalculator
    attr_reader :collector

    def initialize(collector)
      @collector = collector
    end

    def total
      GitDiff::Stats.new(
        number_of_lines: calculate_total(:number_of_lines),
        number_of_additions: calculate_total(:number_of_additions),
        number_of_deletions: calculate_total(:number_of_deletions)
      )
    end

    private

    def calculate_total(type)
      collect_stat(type).inject(:+)
    end

    def collect_stat(type)
      stats_collection.map { |stats| stats.public_send(type) }.flatten
    end

    def stats_collection
      Array(collector.collect)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
git_diff-0.4.3 lib/git_diff/stats_calculator.rb