lib/attractor/calculators/base_calculator.rb~ in attractor-2.1.0 vs lib/attractor/calculators/base_calculator.rb~ in attractor-2.2.0

- old
+ new

@@ -1,54 +1,52 @@ # frozen_string_literal: true -require 'churn/calculator' -require 'csv' -require 'date' -require 'flog' -require 'listen' +require "churn/calculator" -require 'attractor/value' +require "attractor/value" module Attractor # calculates churn and complexity class BaseCalculator - def initialize(file_prefix: '', file_extension: 'rb', minimum_churn_count: 3) + attr_reader :type + + def initialize(file_prefix: "", ignores: "", file_extension: "rb", minimum_churn_count: 3, start_ago: "5y") @file_prefix = file_prefix @file_extension = file_extension @minimum_churn_count = minimum_churn_count + @start_date = Date.today - Attractor::DurationParser.new(start_ago).duration + @ignores = ignores end def calculate churn = ::Churn::ChurnCalculator.new( file_extension: @file_extension, file_prefix: @file_prefix, minimum_churn_count: @minimum_churn_count, - start_date: Date.today - 365 * 5 + start_date: @start_date, + ignores: @ignores ).report(false) churn[:churn][:changes].map do |change| complexity, details = yield(change) - # flogger = Flog.new(all: true) - # flogger.flog(change[:file_path]) - # complexity = flogger.total_score - # details = flogger.totals - Value.new(file_path: change[:file_path], - churn: change[:times_changed], - complexity: complexity, - details: details, - history: git_history_for_file(file_path: change[:file_path])) + value = Value.new(file_path: change[:file_path], + churn: change[:times_changed], + complexity: complexity, + details: details, + history: git_history_for_file(file_path: change[:file_path])) + value end end private def git_history_for_file(file_path:, limit: 10) history = `git log --oneline -n #{limit} -- #{file_path}` history.split("\n") - .map do |log_entry| + .map do |log_entry| log_entry.partition(/\A(\S+)\s/) - .map(&:strip) - .reject(&:empty?) + .map(&:strip) + .reject(&:empty?) end end end end