lib/unit_measurements/measurement.rb in unit_measurements-1.5.0 vs lib/unit_measurements/measurement.rb in unit_measurements-1.5.1
- old
+ new
@@ -24,17 +24,19 @@
target_unit = unit_from_unit_or_name!(target_unit)
return self if target_unit == unit
conversion_factor = (unit.conversion_factor / target_unit.conversion_factor)
+
self.class.new((quantity * conversion_factor), target_unit)
end
alias_method :to, :convert_to
def convert_to!(target_unit)
measurement = convert_to(target_unit)
@quantity, @unit = measurement.quantity, measurement.unit
+
self
end
alias_method :to!, :convert_to!
def inspect(dump: false)
@@ -68,17 +70,19 @@
:unit_or_alias?, :[]
def parse(input)
input = Normalizer.normalize(input)
source, target = input.match(CONVERSION_STRING_REGEXP)&.captures
+
target ? _parse(source).convert_to(target) : _parse(source)
end
private
def _parse(string)
quantity, unit = Parser.parse(string)
+
new(quantity, unit)
end
end
private
@@ -90,9 +94,10 @@
when Integer
Rational(quantity)
when String
quantity = Normalizer.normalize(quantity)
quantity, _ = Parser.parse(quantity)
+
quantity
else
quantity
end
end