lib/asciimath2unitsml/unit.rb in asciimath2unitsml-0.2.0 vs lib/asciimath2unitsml/unit.rb in asciimath2unitsml-0.2.1
- old
+ new
@@ -4,15 +4,16 @@
units.reject { |u| u[:multiplier] }
end
def unit_id(text)
text = text.gsub(/[()]/, "")
- "U_" +
- (@units[text] ? @units[text].id : text.gsub(/\*/, ".").gsub(/\^/, ""))
+ /-$/.match(text) and return @prefixes[text.sub(/-$/, "")].id
+ "U_" + (@units[text] ? @units[text].id : text.gsub(/\*/, ".").gsub(/\^/, ""))
end
def unit(units, origtext, normtext, dims, name)
+ return if units_only(units).any? { |x| x[:unit].nil? }
dimid = dim_id(dims)
norm_units = normalise_units(units)
<<~END
<Unit xmlns='#{UNITSML_NS}' xml:id='#{unit_id(normtext)}'#{dimid ? " dimensionURL='##{dimid}'" : ""}>
#{unitsystem(units)}
@@ -32,10 +33,11 @@
end
end
# kg exception
def unitsystem(units)
+ return if units_only(units).any? { |x| x[:unit].nil? }
ret = []
units = units_only(units)
units.any? { |x| @units[x[:unit]].system_name != "SI" } and
ret << "<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>"
if units.any? { |x| @units[x[:unit]].system_name == "SI" }
@@ -62,9 +64,10 @@
<UnitSymbol type="MathML">#{mathmlsymbolwrap(units, true)}</UnitSymbol>
END
end
def rootunits(units)
+ return if units_only(units).any? { |x| x[:unit].nil? }
return if units.size == 1 && !units[0][:prefix]
exp = units_only(units).map do |u|
prefix = " prefix='#{u[:prefix]}'" if u[:prefix]
exponent = " powerNumerator='#{u[:exponent]}'" if u[:exponent] && u[:exponent] != "1"
"<EnumeratedRootUnit unit='#{@units[u[:unit]].name}'#{prefix}#{exponent}/>"