87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/unitsml/utility.rb', line 87
def decompose_unit(u)
if u&.unit_name == "g" || u.system_type == "SI_base"
{ unit: u, prefix: u&.prefix }
elsif u.si_derived_bases.nil? || u.si_derived_bases.empty?
{ unit: Unit.new("unknown") }
else
u.si_derived_bases.each_with_object([]) do |k, object|
prefix = if !k.prefix.nil? && !k.prefix.empty?
combine_prefixes(prefix_object(k.prefix), u.prefix)
else
u.prefix
end
unit_name = Unitsdb.units.find_by_id(k.id).unit_symbols.first.id
exponent = (k.power&.to_i || 1) * (u.power_numerator&.to_f || 1)
object << { prefix: prefix,
unit: Unit.new(unit_name, exponent, prefix: prefix),
}
end
end
end
|