Method: Unitsml::Utility.units2dimensions

Defined in:
lib/unitsml/utility.rb

.units2dimensions(units) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/unitsml/utility.rb', line 56

def units2dimensions(units)
  norm = decompose_units_list(units)
  return if norm.any? { |u| u.nil? || u[:unit].unit_name == "unknown" || u[:prefix] == "unknown" }

  norm.map do |u|
    unit_name = u[:unit].unit_name
    {
      dimension: U2D[unit_name][:dimension],
      unit: unit_name,
      exponent: u[:unit].power_numerator || 1,
      symbol: U2D[unit_name][:symbol],
    }
  end.sort { |a, b| U2D[a[:unit]][:order] <=> U2D[b[:unit]][:order] }
end