lib/measured/unit.rb in measured-2.0.0.pre1 vs lib/measured/unit.rb in measured-2.0.0.pre2

- old
+ new

@@ -1,16 +1,26 @@ class Measured::Unit include Comparable - attr_reader :name, :names, :conversion_amount, :conversion_unit + attr_reader :name, :names, :conversion_amount, :conversion_unit, :unit_system - def initialize(name, aliases: [], value: nil) + def initialize(name, aliases: [], value: nil, unit_system: nil) @name = name.to_s @names = ([@name] + aliases.map(&:to_s)).sort @conversion_amount, @conversion_unit = parse_value(value) if value + @unit_system = unit_system end + def with_unit_system(unit_system) + self.class.new( + name, + aliases: names - [name], + value: conversion_string, + unit_system: unit_system + ) + end + def to_s if conversion_string "#{ @name } (#{ conversion_string })" else @name @@ -21,13 +31,14 @@ "#<Measured::Unit: #{ @name } (#{ @names.join(", ") }) #{ conversion_string }>" end def <=>(other) if self.class == other.class - if other.names != @names - other.names <=> @names + names_comparison = @names <=> other.names + if names_comparison != 0 + names_comparison else - other.conversion_amount <=> @conversion_amount + @conversion_amount <=> other.conversion_amount end else @name <=> other end end