Module: Calculator
- Included in:
- Calcpace
- Defined in:
- lib/calcpace/calculator.rb
Overview
Module to calculate time, distance, pace and velocity
This module provides methods to perform calculations related to running and pace. All methods that accept numeric inputs validate that values are positive. Methods prefixed with ‘checked_’ accept time strings in HH:MM:SS or MM:SS format. Methods prefixed with ‘clock_’ return results in time format (HH:MM:SS).
Instance Method Summary collapse
-
#checked_distance(time, velocity) ⇒ Float
Calculates distance from time and velocity strings.
-
#checked_pace(time, distance) ⇒ Float
Calculates pace from a time string.
-
#checked_time(velocity, distance) ⇒ Float
Calculates time from a velocity string and distance.
-
#checked_velocity(time, distance) ⇒ Float
Calculates velocity from a time string.
-
#clock_pace(time, distance) ⇒ String
Calculates pace from a time string and returns result as a clock time string.
-
#clock_time(velocity, distance) ⇒ String
Calculates time from a velocity string and returns result as a clock time string.
-
#clock_velocity(time, distance) ⇒ String
Calculates velocity from a time string and returns result as a clock time string.
-
#distance(time, velocity) ⇒ Float
Calculates distance given time and velocity.
-
#pace(time, distance) ⇒ Float
Calculates pace (time per unit distance).
-
#time(velocity, distance) ⇒ Float
Calculates time given velocity and distance.
-
#velocity(time, distance) ⇒ Float
Calculates velocity (distance per unit time).
Instance Method Details
#checked_distance(time, velocity) ⇒ Float
Calculates distance from time and velocity strings
162 163 164 165 166 |
# File 'lib/calcpace/calculator.rb', line 162 def checked_distance(time, velocity) time_seconds = convert_to_seconds(validate_time(time)) velocity_seconds = convert_to_seconds(validate_time(velocity)) distance(time_seconds, velocity_seconds) end |
#checked_pace(time, distance) ⇒ Float
Calculates pace from a time string
77 78 79 80 |
# File 'lib/calcpace/calculator.rb', line 77 def checked_pace(time, distance) seconds = convert_to_seconds(validate_time(time)) pace(seconds, distance) end |
#checked_time(velocity, distance) ⇒ Float
Calculates time from a velocity string and distance
120 121 122 123 |
# File 'lib/calcpace/calculator.rb', line 120 def checked_time(velocity, distance) velocity_seconds = convert_to_seconds(validate_time(velocity)) time(velocity_seconds, distance) end |
#checked_velocity(time, distance) ⇒ Float
Calculates velocity from a time string
34 35 36 37 |
# File 'lib/calcpace/calculator.rb', line 34 def checked_velocity(time, distance) seconds = convert_to_seconds(validate_time(time)) velocity(seconds, distance) end |
#clock_pace(time, distance) ⇒ String
Calculates pace from a time string and returns result as a clock time string
92 93 94 |
# File 'lib/calcpace/calculator.rb', line 92 def clock_pace(time, distance) convert_to_clocktime(checked_pace(time, distance)) end |
#clock_time(velocity, distance) ⇒ String
Calculates time from a velocity string and returns result as a clock time string
135 136 137 |
# File 'lib/calcpace/calculator.rb', line 135 def clock_time(velocity, distance) convert_to_clocktime(checked_time(velocity, distance)) end |
#clock_velocity(time, distance) ⇒ String
Calculates velocity from a time string and returns result as a clock time string
49 50 51 |
# File 'lib/calcpace/calculator.rb', line 49 def clock_velocity(time, distance) convert_to_clocktime(checked_velocity(time, distance)) end |
#distance(time, velocity) ⇒ Float
Calculates distance given time and velocity
148 149 150 151 |
# File 'lib/calcpace/calculator.rb', line 148 def distance(time, velocity) validate_positive({ time: time, velocity: velocity }) time.to_f / velocity end |
#pace(time, distance) ⇒ Float
Calculates pace (time per unit distance)
62 63 64 65 |
# File 'lib/calcpace/calculator.rb', line 62 def pace(time, distance) validate_positive({ time: time, distance: distance }) time.to_f / distance end |
#time(velocity, distance) ⇒ Float
Calculates time given velocity and distance
105 106 107 108 |
# File 'lib/calcpace/calculator.rb', line 105 def time(velocity, distance) validate_positive({ velocity: velocity, distance: distance }) velocity * distance end |
#velocity(time, distance) ⇒ Float
Calculates velocity (distance per unit time)
19 20 21 22 |
# File 'lib/calcpace/calculator.rb', line 19 def velocity(time, distance) validate_positive({ time: time, distance: distance }) distance.to_f / time end |