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