class Stressfactor::AveragePaceAccumulator

Attributes

intervals[RW]

Public Class Methods

new(intervals) click to toggle source
# File lib/stressfactor/average_pace_accumulator.rb, line 5
def initialize(intervals)
  @intervals = intervals
end

Public Instance Methods

average_pace(strategy: :raw) click to toggle source
# File lib/stressfactor/average_pace_accumulator.rb, line 9
def average_pace(strategy: :raw)
  strategy_klass = strategy == :raw ? RawPaceStrategy : GradeAdjustedPaceStrategy
  intervals.inject(0) do |acc, interval|
    weighted_interval = (interval.distance / total_distance) * strategy_klass.calculate_for_interval(interval)
    acc + weighted_interval
  end
end

Private Instance Methods

total_distance() click to toggle source

Total elapsed time in minutes

# File lib/stressfactor/average_pace_accumulator.rb, line 18
def total_distance
  @total_distance ||= intervals.inject(0) do |acc, interval|
    acc + interval.distance
  end
end