lib/asciimath2unitsml/unit.rb in asciimath2unitsml-0.3.2 vs lib/asciimath2unitsml/unit.rb in asciimath2unitsml-0.3.3
- old
+ new
@@ -10,20 +10,21 @@
"U_" + (@units[text] ? @units[text].id.gsub(/'/, "_") : 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)}
- #{unitname(norm_units, normtext, name)}
- #{unitsymbol(norm_units)}
- #{rootunits(units)}
- </Unit>
- END
+ <<~XML
+ <Unit xmlns='#{UNITSML_NS}' xml:id='#{unit_id(normtext)}'#{dimid ? " dimensionURL='##{dimid}'" : ""}>
+ #{unitsystem(units)}
+ #{unitname(norm_units, normtext, name)}
+ #{unitsymbol(norm_units)}
+ #{rootunits(units)}
+ </Unit>
+ XML
end
def normalise_units(units)
units.map do |u|
u1 = u.dup
@@ -34,18 +35,19 @@
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" }
base = units.size == 1 && @units[units[0][:unit]].system_type == "SI-base"
base = true if units.size == 1 && units[0][:unit] == "g" && units[0][:prefix] == "k"
- ret << "<UnitSystem name='SI' type='#{base ? "SI_base" : "SI_derived"}' xml:lang='en-US'/>"
+ ret << "<UnitSystem name='SI' type='#{base ? 'SI_base' : 'SI_derived'}' xml:lang='en-US'/>"
end
ret.join("\n")
end
def unitname(units, text, name)
@@ -57,25 +59,27 @@
def compose_name(units, text)
text
end
def unitsymbol(units)
- <<~END
- <UnitSymbol type="HTML">#{htmlsymbol(units, true)}</UnitSymbol>
- <UnitSymbol type="MathML">#{mathmlsymbolwrap(units, true)}</UnitSymbol>
- END
+ <<~XML
+ <UnitSymbol type="HTML">#{htmlsymbol(units, true)}</UnitSymbol>
+ <UnitSymbol type="MathML">#{mathmlsymbolwrap(units, true)}</UnitSymbol>
+ XML
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"
+ u[:exponent] && u[:exponent] != "1" and
+ exponent = " powerNumerator='#{u[:exponent]}'"
"<EnumeratedRootUnit unit='#{@units[u[:unit]].name}'#{prefix}#{exponent}/>"
end.join("\n")
- <<~END
- <RootUnits>#{exp}</RootUnits>
- END
+ <<~XML
+ <RootUnits>#{exp}</RootUnits>
+ XML
end
end
end