Sha256: 2d346126971fb513e5334532fcc5b5c2e8f64268d80c12352d4b438d537b1066

Contents?: true

Size: 1.96 KB

Versions: 23

Compression:

Stored size: 1.96 KB

Contents

# frozen_string_literal: true

module Runby
  module RunTypes
    # Defines the venerable "distance run", the backbone of any distance running program.
    #  Most of your runs should be at this pace. Harder than an "easy run" but still conversational.
    class DistanceRun < RunType
      attr_reader :slow_pace_calculator, :fast_pace_calculator

      def description
        'Distance Run'
      end

      def explanation
        'Most of your weekly training should be comprised of Distance Runs. They are faster than easy runs, but you should still be able to carry on a conversation.'
      end

      def initialize
        @fast_pace_calculator = PaceCalculator.new(GoldenPaces.fast, 3.675)
        @slow_pace_calculator = PaceCalculator.new(GoldenPaces.slow, 2.175)
      end

      def lookup_pace(five_k_time, distance_units = :km)
        fast = @fast_pace_calculator.calc(five_k_time, distance_units)
        slow = @slow_pace_calculator.calc(five_k_time, distance_units)
        PaceRange.new(fast, slow)
      end

      # Used in testing, contains hashes mapping 5K race times with the recommended pace-per-km for this run type.
      class GoldenPaces
        def self.fast
          GoldenPaceSet.new('14:00': '03:44',
                            '15:00': '03:58',
                            '20:00': '05:09',
                            '25:00': '06:18',
                            '30:00': '07:24',
                            '35:00': '08:29',
                            '40:00': '09:33',
                            '42:00': '09:58')
        end

        def self.slow
          GoldenPaceSet.new('14:00': '04:17',
                            '15:00': '04:33',
                            '20:00': '05:53',
                            '25:00': '07:09',
                            '30:00': '08:23',
                            '35:00': '09:33',
                            '40:00': '10:42',
                            '42:00': '11:10')
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
runby_pace-0.62.7 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.62.5 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.62.4 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.62.3 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.62.2 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.2.50.111 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.61.160 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.61.159 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.61.158 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.61.157 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.61.156 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.61.155 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.61.154 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.61.153 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.6.152 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.6.151 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.6.150 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.6.149 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.6.148 lib/runby_pace/run_types/distance_run.rb
runby_pace-0.6.147 lib/runby_pace/run_types/distance_run.rb