lib/asciimath2unitsml/conv.rb in asciimath2unitsml-0.1.2 vs lib/asciimath2unitsml/conv.rb in asciimath2unitsml-0.1.3

- old
+ new

@@ -15,10 +15,14 @@ @prefixes_id = read_yaml("../unitsdb/prefixes.yaml") @prefixes = flip_name_and_id(@prefixes_id) @quantities = read_yaml("../unitsdb/quantities.yaml") @units_id = read_yaml("../unitsdb/units.yaml") @units = flip_name_and_id(@units_id) + #temporary + @units[:degC][:render] = "&#xB0;C" + @units[:degF][:render] = "&#xB0;F" + @units[:Ohm][:render] = "&#x3A9;" @parser = parser @multiplier = multiplier(options[:multiplier] || "\u00b7") end def multiplier(x) @@ -35,10 +39,11 @@ def units_only(units) units.reject { |u| u[:multiplier] } end def unit_id(text) + text = text.gsub(/[()]/, "") "U_" + (@units[text.to_sym] ? @units[text.to_sym][:id] : text.gsub(/\*/, ".").gsub(/\^/, "")) end def unit(units, origtext, normtext, dims) @@ -80,24 +85,29 @@ <UnitSymbol type="HTML">#{htmlsymbol(units)}</UnitSymbol> <UnitSymbol type="MathML">#{mathmlsymbolwrap(units)}</UnitSymbol> END end + def render(unit) + #require "byebug"; byebug if unit == "degC" + @units[unit.to_sym][:render] || unit + end + def htmlsymbol(units) units.map do |u| if u[:multiplier] then u[:multiplier] == "*" ? @multiplier[:html] : u[:multiplier] else u[:display_exponent] and exp = "<sup>#{u[:display_exponent].sub(/-/, "&#x2212;")}</sup>" - "#{u[:prefix]}#{u[:unit]}#{exp}" + "#{u[:prefix]}#{render(u[:unit])}#{exp}" end end.join("") end def mathmlsymbol(units) exp = units.map do |u| if u[:multiplier] then u[:multiplier] == "*" ? @multiplier[:mathml] : "<mo>#{u[:multiplier]}</mo>" else - base = "<mi mathvariant='normal'>#{u[:prefix]}#{u[:unit]}</mi>" + base = "<mi mathvariant='normal'>#{u[:prefix]}#{render(u[:unit])}</mi>" if u[:display_exponent] exp = "<mn>#{u[:display_exponent]}</mn>".sub(/<mn>-/, "<mo>&#x2212;</mo><mn>") "<msup><mrow>#{base}</mrow><mrow>#{exp}</mrow></msup>" else base