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)