runby_pace 0.61.153 → 0.61.154

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c60a2e73563c7842283f902a9296cb19dab57ff1
4
- data.tar.gz: 47ce26e84f4542fe38d64b3177231a9591801e94
3
+ metadata.gz: 606c3c91ef5137d4eb17d80fec2e6abc1de92110
4
+ data.tar.gz: 512fafad4f8f3f04a08274e3b63a34935bf25be9
5
5
  SHA512:
6
- metadata.gz: cf89a3299ecd7230f8801021a015f61d5244376ec2ac3ba1e41bbee061bc31485e0f56e8665d19ffaed6f099670d22c506bd238b88713c2dbb8c20abf5c51365
7
- data.tar.gz: 2225f218942a998edc91a1d551ab2d4badd816674638c343b1bd0a6dcc5ace56d8bac75056e062543d2d5d85370609c4b33474f60b7264634d1f4872055bff6e
6
+ metadata.gz: 95c099f7c0e5257f68136e32065fb6149c2f06bd5fdc0cfb3fa97b09b52c7030b8a7fe62a42bcdbb0ced3e82bcdba31081dc44f6fab46c027dc164dfcd1041e0
7
+ data.tar.gz: 35cf6b718b23ddd67b0c4bcf3af08ad945041cfa00cd3f1d37cf3d05e4c3e52c1ee9245536c0444d428c2a636a5d590cb9c31a2594e442b0e5474cbd3eec29e6
@@ -6,14 +6,17 @@ module Runby
6
6
  include Comparable
7
7
 
8
8
  attr_reader :uom, :multiplier
9
+
10
+ def self.new(uom = :km, multiplier = 1)
11
+ return uom if uom.is_a? Distance
12
+ return Distance.parse uom if uom.is_a? String
13
+ super
14
+ end
15
+
9
16
  def initialize(uom = :km, multiplier = 1)
10
17
  case uom
11
- when Distance
12
- init_from_clone uom
13
18
  when DistanceUnit
14
19
  init_from_distance_unit uom, multiplier
15
- when String
16
- init_from_string uom
17
20
  when Symbol
18
21
  init_from_symbol uom, multiplier
19
22
  else
@@ -116,20 +119,11 @@ module Runby
116
119
 
117
120
  private
118
121
 
119
- def init_from_clone(distance)
120
- @uom = distance.uom
121
- @multiplier = distance.multiplier
122
- end
123
-
124
122
  def init_from_distance_unit(uom, multiplier)
125
123
  @uom = uom
126
124
  @multiplier = multiplier
127
125
  end
128
126
 
129
- def init_from_string(string)
130
- init_from_clone Distance.parse string
131
- end
132
-
133
127
  def init_from_symbol(distance_uom_symbol, multiplier)
134
128
  raise "Unknown unit of measure #{distance_uom_symbol}" unless Runby::DistanceUnit.known_uom? distance_uom_symbol
135
129
  raise 'Invalid multiplier' unless multiplier.is_a?(Numeric)
@@ -7,12 +7,15 @@ module Runby
7
7
  class DistanceUnit
8
8
  attr_reader :symbol, :description, :conversion_factor
9
9
 
10
+ def self.new(unit_of_measure)
11
+ return unit_of_measure if unit_of_measure.is_a? DistanceUnit
12
+ return DistanceUnit.parse(unit_of_measure) if unit_of_measure.is_a? String
13
+ super
14
+ end
15
+
10
16
  def initialize(unit_of_measure)
11
- if unit_of_measure.is_a? Symbol
12
- init_from_symbol unit_of_measure
13
- elsif unit_of_measure.is_a? String
14
- init_from_string unit_of_measure
15
- end
17
+ raise "':#{unit_of_measure}' is an unknown unit of measure" unless DistanceUnit.known_uom? unit_of_measure
18
+ @symbol = unit_of_measure
16
19
  @conversion_factor = UOM_DEFINITIONS[@symbol][:conversion_factor]
17
20
  @description = UOM_DEFINITIONS[@symbol][:description]
18
21
  freeze
@@ -81,17 +84,5 @@ module Runby
81
84
  # Fun distance unit of measures
82
85
  marathon: { description: 'marathon', description_plural: 'marathons', conversion_factor: 42.1648128,
83
86
  synonyms: %w[marathon] } }.freeze
84
-
85
- private
86
-
87
- def init_from_symbol(unit_of_measure)
88
- raise "':#{unit_of_measure}' is an unknown unit of measure" unless DistanceUnit.known_uom? unit_of_measure
89
- @symbol = unit_of_measure
90
- end
91
-
92
- def init_from_string(unit_of_measure)
93
- parsed_uom = DistanceUnit.parse(unit_of_measure)
94
- @symbol = parsed_uom.symbol
95
- end
96
87
  end
97
88
  end
@@ -7,10 +7,13 @@ module Runby
7
7
 
8
8
  attr_reader :time, :distance
9
9
 
10
+ def self.new(time_or_pace, distance = '1K')
11
+ return time_or_pace if time_or_pace.is_a? Pace
12
+ super
13
+ end
14
+
10
15
  def initialize(time_or_pace, distance = '1K')
11
16
  case time_or_pace
12
- when Pace
13
- init_from_clone time_or_pace
14
17
  when RunbyTime
15
18
  init_from_time time_or_pace, distance
16
19
  when String
@@ -128,12 +131,6 @@ module Runby
128
131
 
129
132
  private
130
133
 
131
- def init_from_clone(other_pace)
132
- raise "#{other_pace} is not a Runby::Pace" unless other_pace.is_a? Pace
133
- @time = other_pace.time
134
- @distance = other_pace.distance
135
- end
136
-
137
134
  def init_from_string(string, distance = '1K')
138
135
  pace = Pace.try_parse(string)
139
136
  if pace[:pace]
@@ -7,16 +7,24 @@ module Runby
7
7
 
8
8
  attr_reader :distance
9
9
 
10
+ def self.new(distance_or_multiplier, units = :km)
11
+ return distance_or_multiplier if distance_or_multiplier.is_a? Speed
12
+ if distance_or_multiplier.is_a? String
13
+ parsed_speed = Speed.try_parse(distance_or_multiplier)
14
+ return parsed_speed[:speed] unless parsed_speed[:error]
15
+ end
16
+ super
17
+ end
18
+
10
19
  def initialize(distance_or_multiplier, units = :km)
11
20
  case distance_or_multiplier
12
21
  when Distance
13
22
  init_from_distance distance_or_multiplier
14
23
  when String
15
- init_from_string distance_or_multiplier
24
+ # Already tried to parse it as a Speed string. Try parsing it as a Distance string.
25
+ init_from_distance_string distance_or_multiplier
16
26
  when Numeric
17
27
  init_from_multiplier(distance_or_multiplier, units)
18
- when Speed
19
- init_from_clone distance_or_multiplier
20
28
  else
21
29
  raise 'Unable to initialize Runby::Speed'
22
30
  end
@@ -68,27 +76,18 @@ module Runby
68
76
 
69
77
  private
70
78
 
71
- def init_from_clone(other_speed)
72
- @distance = Distance.new(other_speed.distance)
73
- end
74
-
75
79
  def init_from_distance(distance)
76
- @distance = Distance.new(distance)
80
+ @distance = distance
77
81
  end
78
82
 
79
83
  def init_from_multiplier(multiplier, uom)
80
84
  @distance = Distance.new(uom, multiplier)
81
85
  end
82
86
 
83
- def init_from_string(str)
84
- results = Speed.try_parse(str)
85
- unless results[:error]
86
- init_from_clone results[:speed]
87
- return
88
- end
87
+ def init_from_distance_string(str)
89
88
  results = Distance.try_parse(str)
90
89
  unless results[:error]
91
- init_from_distance results[:distance]
90
+ @distance = results[:distance]
92
91
  return
93
92
  end
94
93
  raise "'#{str}' is not recognized as a Speed"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runby_pace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.61.153
4
+ version: 0.61.154
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ty Walls
@@ -108,7 +108,7 @@ homepage: https://github.com/tygerbytes/runby-pace
108
108
  licenses:
109
109
  - MIT
110
110
  metadata:
111
- commit-hash: 3fc9ad10f233d833635a4ee48619fcd7957f98f3
111
+ commit-hash: 09fc1b1dbcb0402ebffe9a33901f65105ffb04aa
112
112
  post_install_message:
113
113
  rdoc_options: []
114
114
  require_paths: