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}/>"