Module: PaceConverter

Included in:
Calcpace
Defined in:
lib/calcpace/pace_converter.rb

Overview

Module for converting pace between different distance units

This module provides methods to convert running pace between kilometers and miles, maintaining the time per distance unit format.

Instance Method Summary collapse

Instance Method Details

#convert_pace(pace, conversion) ⇒ String

Converts pace from one unit to another

Examples:

convert_pace('05:00', :km_to_mi)    #=> '08:02' (5:00/km = 8:02/mi)
convert_pace('08:00', :mi_to_km)    #=> '04:58' (8:00/mi ≈ 4:58/km)
convert_pace(300, 'km to mi')       #=> '08:02' (300s/km = 482s/mi)

Parameters:

  • pace (Numeric, String)

    pace in seconds per unit or time string (MM:SS)

  • conversion (Symbol, String)

    conversion type (:km_to_mi, :mi_to_km, ‘km to mi’, ‘mi to km’)

Returns:

  • (String)

    converted pace in MM:SS format

Raises:



20
21
22
23
24
25
26
27
28
# File 'lib/calcpace/pace_converter.rb', line 20

def convert_pace(pace, conversion)
  pace_seconds = pace.is_a?(String) ? convert_to_seconds(pace) : pace
  check_positive(pace_seconds, 'Pace')

  conversion_type = normalize_conversion(conversion)
  converted_seconds = apply_pace_conversion(pace_seconds, conversion_type)

  convert_to_clocktime(converted_seconds)
end

#pace_km_to_mi(pace_per_km) ⇒ String

Converts pace from kilometers to miles

Examples:

pace_km_to_mi('05:00')  #=> '08:02' (5:00/km = 8:02/mi)
pace_km_to_mi(300)      #=> '08:02' (300s/km = 482s/mi)

Parameters:

  • pace_per_km (Numeric, String)

    pace in seconds per km or time string (MM:SS)

Returns:

  • (String)

    pace per mile in MM:SS format



38
39
40
# File 'lib/calcpace/pace_converter.rb', line 38

def pace_km_to_mi(pace_per_km)
  convert_pace(pace_per_km, :km_to_mi)
end

#pace_mi_to_km(pace_per_mi) ⇒ String

Converts pace from miles to kilometers

Examples:

pace_mi_to_km('08:00')  #=> '04:58' (8:00/mi ≈ 4:58/km)
pace_mi_to_km(480)      #=> '04:58' (480s/mi = 298s/km)

Parameters:

  • pace_per_mi (Numeric, String)

    pace in seconds per mile or time string (MM:SS)

Returns:

  • (String)

    pace per kilometer in MM:SS format



50
51
52
# File 'lib/calcpace/pace_converter.rb', line 50

def pace_mi_to_km(pace_per_mi)
  convert_pace(pace_per_mi, :mi_to_km)
end