lib/runby_pace/distance.rb in runby_pace-0.61.153 vs lib/runby_pace/distance.rb in runby_pace-0.61.154
- old
+ new
@@ -4,18 +4,21 @@
# Represents a distance (distance UOM and multiplier)
class Distance
include Comparable
attr_reader :uom, :multiplier
+
+ def self.new(uom = :km, multiplier = 1)
+ return uom if uom.is_a? Distance
+ return Distance.parse uom if uom.is_a? String
+ super
+ end
+
def initialize(uom = :km, multiplier = 1)
case uom
- when Distance
- init_from_clone uom
when DistanceUnit
init_from_distance_unit uom, multiplier
- when String
- init_from_string uom
when Symbol
init_from_symbol uom, multiplier
else
raise 'Invalid distance unit of measure'
end
@@ -114,21 +117,12 @@
end
end
private
- def init_from_clone(distance)
- @uom = distance.uom
- @multiplier = distance.multiplier
- end
-
def init_from_distance_unit(uom, multiplier)
@uom = uom
@multiplier = multiplier
- end
-
- def init_from_string(string)
- init_from_clone Distance.parse string
end
def init_from_symbol(distance_uom_symbol, multiplier)
raise "Unknown unit of measure #{distance_uom_symbol}" unless Runby::DistanceUnit.known_uom? distance_uom_symbol
raise 'Invalid multiplier' unless multiplier.is_a?(Numeric)