runby_pace 0.6.90 → 0.6.91

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MTY5ZjIwN2ZlMTc5N2ZlNzQzMzRiZTJkYzA0ZmU3N2NkODA1ZTVlNw==
4
+ ZjdhNDYyNjQzZmE3ZTQzNDU3MTlhMmIzYWY0OTgxMWUwNmJlMTJlZA==
5
5
  data.tar.gz: !binary |-
6
- YmRmNzMyZDc5NzYyMGQ3YzlhMGU3NTRjZTg0MjBkOWRiNmQ0NDcyYw==
6
+ Y2IyYWI4MTNlMTVkNDdkOGM2NTI2YjljMzEyMzgzNjNlNmM4NzkyYQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NGMwZDY2Y2UyNDUxMjk2MzE1MGY0NzVlNDAyNGVlNmE3MDdjMGZjZDc2OGYw
10
- ZmFkZGI4MjEyMDc3NDAwNWE2MjBjMjkzMTE1NTVmY2VjYTUxNmMzN2UwYTNi
11
- ZDUyY2MyN2JiYmY1NTZiY2RlMzQzNmVkZGI3M2M5YjkyNGMxZTQ=
9
+ NDg2MDRkMjAzN2MyY2ZhZjk2ODFjZjBlMGMxOGEyNjViNjM2YWFhOWM0Njcz
10
+ OTY5ODljYjY4NzUzMmI1MWViZWE5ZDg3MzUzNGE2MTNmZTI2MjdkYTY0Y2Vm
11
+ Yzg4MDM3MDAxMWE1NTk1YjQ2MGI4ZjczZTM5MWYxN2NiYWVmMDk=
12
12
  data.tar.gz: !binary |-
13
- OGU4YTEwZTE5Y2Y0MDU0MWE0ZjhkODRhNzExNDgzM2QyYWJhYWNlZTEzZjU0
14
- OTI1ZGVjOGMzMjQyZTdkOTkxN2EzYzM3YzYwM2JlOWNmMGUxOWY3NTMzYzM5
15
- YjdkZGE0YmRjZDQ1Y2U3MjM4NTJmZDBiOWM2OTg0ZjUxYTk0NDk=
13
+ NzE0ZDFmNjM3NWRlMjQzNWNhZjIyMDJiNGEwZTU4ZGQzMWViNjhiM2U0NmFi
14
+ N2QwOGI5ODA1OGQ2ZmM1OTNkMDYyZTJkZWI2NWI4NTNhNjhjOGNlNTUwODFh
15
+ NTJiYjZjYTBlYjRkYjUwMGViYTMzZDhjMmMwN2FmZTBmZWQxZTU=
@@ -2,6 +2,7 @@ module Runby
2
2
  # Represents a pace consisting of a distance and a time in which that distance was covered
3
3
  class Pace
4
4
  attr_reader :time, :distance
5
+
5
6
  def initialize(time, distance = '1K')
6
7
  @time = Runby::RunbyTime.parse(time)
7
8
  @distance = Runby::Distance.new(distance)
@@ -26,14 +26,14 @@ module Runby
26
26
  attr_reader :midpoint_radius_divisor
27
27
 
28
28
  def initialize(fastest_pace_km, slowest_pace_km, midpoint_radius_divisor)
29
- @fastest_pace_km = Runby::RunbyTime.new(fastest_pace_km)
30
- @slowest_pace_km = Runby::RunbyTime.new(slowest_pace_km)
29
+ @fastest_pace_km = Pace.new(fastest_pace_km)
30
+ @slowest_pace_km = Pace.new(slowest_pace_km)
31
31
  @midpoint_radius_divisor = midpoint_radius_divisor
32
32
  end
33
33
 
34
34
  # Calculate the slope of the line between the fastest and slowest paces
35
35
  def slope
36
- (@slowest_pace_km.total_minutes - @fastest_pace_km.total_minutes) / (DATA_POINTS_COUNT - 1)
36
+ (@slowest_pace_km.time.total_minutes - @fastest_pace_km.time.total_minutes) / (DATA_POINTS_COUNT - 1)
37
37
  end
38
38
 
39
39
  # Calculate the prescribed pace for the given 5K time
@@ -41,9 +41,13 @@ module Runby
41
41
  five_k_time = Runby::RunbyTime.new five_k_time
42
42
  distance_units = Runby::DistanceUnit.new distance_units
43
43
  x2 = ((five_k_time.total_minutes * 2) - (MIDPOINT_X - 1)) - 1
44
- minutes_per_km = slope * x2 + @fastest_pace_km.total_minutes + curve_minutes(x2)
44
+ minutes_per_km = slope * x2 + @fastest_pace_km.time.total_minutes + curve_minutes(x2)
45
45
  minutes_per_unit = minutes_per_km * distance_units.conversion_factor
46
- Runby::RunbyTime.from_minutes(minutes_per_unit)
46
+
47
+ # TODO: Is there a way to clean up all of this "newing up"?
48
+ time = RunbyTime.from_minutes(minutes_per_unit)
49
+ distance = Distance.new distance_units, 1
50
+ Pace.new time, distance
47
51
  end
48
52
 
49
53
  private
@@ -3,16 +3,31 @@ require_relative 'runby_range'
3
3
  module Runby
4
4
  # Represents a range of paces, from fast to slow.
5
5
  class PaceRange < RunbyRange
6
- def initialize(fast, slow)
7
- @fast = Runby::RunbyTime.new(fast)
8
- @slow = Runby::RunbyTime.new(slow)
6
+ def initialize(fast, slow, distance_units = :km)
7
+ if fast.is_a?(Pace) && slow.is_a?(Pace)
8
+ @fast = fast
9
+ @slow = slow
10
+ else
11
+ # Hopefully 'fast' and 'slow' are parseable as a RunbyTime
12
+ distance = Distance.new distance_units, 1
13
+ @fast = Pace.new(fast, distance)
14
+ @slow = Pace.new(slow, distance)
15
+ end
9
16
  end
10
17
 
11
18
  # Create a new pace range from an existing speed range.
12
19
  def self.from_speed_range(speed_range)
13
- fast = Runby::RunMath.convert_speed_to_pace speed_range.fast
14
- slow = Runby::RunMath.convert_speed_to_pace speed_range.slow
20
+ fast = RunMath.convert_speed_to_pace speed_range.fast
21
+ slow = RunMath.convert_speed_to_pace speed_range.slow
15
22
  PaceRange.new fast, slow
16
23
  end
24
+
25
+ def to_s
26
+ if @fast.time == @slow.time
27
+ @fast.to_s
28
+ else
29
+ "#{@fast.time}-#{@slow.time} per #{@fast.distance.pluralized_uom}"
30
+ end
31
+ end
17
32
  end
18
33
  end
@@ -23,7 +23,7 @@ module Runby
23
23
  five_k_time = Runby::RunbyTime.new(five_k.to_s)
24
24
  pace_data = Runby::PaceData.new(first_pace, last_pace, candidate_divisor)
25
25
  calculated_pace = pace_data.calc(five_k_time)
26
- unless calculated_pace.almost_equals?(golden_pace, allowable_deviation)
26
+ unless calculated_pace.time.almost_equals?(golden_pace, allowable_deviation)
27
27
  viable_divisor = nil
28
28
  break
29
29
  end
@@ -11,8 +11,9 @@ module Runby
11
11
 
12
12
  # Create a new speed range from an existing pace range.
13
13
  def self.from_pace_range(pace_range)
14
- fast = Runby::RunMath.convert_pace_to_speed pace_range.fast
15
- slow = Runby::RunMath.convert_pace_to_speed pace_range.slow
14
+ # TODO: We need a Speed class with Distance_units included
15
+ fast = Runby::RunMath.convert_pace_to_speed pace_range.fast.time
16
+ slow = Runby::RunMath.convert_pace_to_speed pace_range.slow.time
16
17
  SpeedRange.new fast, slow
17
18
  end
18
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runby_pace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.90
4
+ version: 0.6.91
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ty Walls
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-19 00:00:00.000000000 Z
11
+ date: 2016-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -99,7 +99,7 @@ homepage: https://github.com/tygerbytes/runby-pace
99
99
  licenses:
100
100
  - MIT
101
101
  metadata:
102
- commit-hash: ee97106f1aa238cd021a1952e33ec8e088f6f736
102
+ commit-hash: bca3bf3dde2a647c39066155a2eaba08968521ce
103
103
  post_install_message:
104
104
  rdoc_options: []
105
105
  require_paths: