Module:Convert: Difference between revisions
update from sandbox per Template talk:Convert#Module version 25
m (1 revision imported) |
mp>Johnuniq (update from sandbox per Template talk:Convert#Module version 25) |
||
Line 442: | Line 442: | ||
-- END: Code required only for built-in units. | -- END: Code required only for built-in units. | ||
------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ||
local function add_style(parms, class) | |||
-- Add selected template style to parms if not already present. | |||
parms.templatestyles = parms.templatestyles or {} | |||
if not parms.templatestyles[class] then | |||
parms.templatestyles[class] = parms.frame:extensionTag({ | |||
name = 'templatestyles', args = { src = text_code.titles[class] } | |||
}) | |||
end | |||
end | |||
local function get_styles(parms) | |||
-- Return string of required template styles, empty if none. | |||
if parms.templatestyles then | |||
local t = {} | |||
for _, v in pairs(parms.templatestyles) do | |||
table.insert(t, v) | |||
end | |||
return table.concat(t) | |||
end | |||
return '' | |||
end | |||
local function get_range(word) | local function get_range(word) | ||
Line 1,117: | Line 1,139: | ||
local fracfmt = { | local fracfmt = { | ||
{ -- Like {{frac}} (fraction slash). | { -- Like {{frac}} (fraction slash). | ||
'<span class="frac" role="math">{SIGN}<span class="num">{NUM}</span>⁄<span class="den">{DEN}</span></span>', -- 1/2 | |||
'<span class="frac" role="math">{SIGN}{WHOLE}<span class="sr-only">+</span><span class="num">{NUM}</span>⁄<span class="den">{DEN}</span></span>', -- 1+2/3 | |||
'<span class="frac | style = 'frac', | ||
'<span class="frac | |||
}, | }, | ||
{ -- Like {{sfrac}} (fraction horizontal bar). | { -- Like {{sfrac}} (stacked fraction, that is, horizontal bar). | ||
'<span class="sfrac tion" role="math">{SIGN}<span class="num">{NUM}</span><span class="sr-only">/</span><span class="den">{DEN}</span></span>', -- 1//2 | |||
'<span class="sfrac" role="math">{SIGN}{WHOLE}<span class="sr-only">+</span><span class="tion"><span class="num">{NUM}</span><span class="sr-only">/</span><span class="den">{DEN}</span></span></span>', -- 1+2//3 | |||
'<span class="sfrac | style = 'sfrac', | ||
'<span class="sfrac | |||
}, | }, | ||
} | } | ||
Line 1,140: | Line 1,160: | ||
wholestr = nil | wholestr = nil | ||
end | end | ||
local substitute = { | |||
SIGN = negative and MINUS or '', | |||
WHOLE = wholestr and with_separator(parms, wholestr), | |||
NUM = from_en(numstr), | |||
DEN = from_en(denstr), | |||
} | |||
wikitext = fracfmt[style][wholestr and 2 or 1]:gsub('{(%u+)}', substitute) | |||
if do_spell then | if do_spell then | ||
if negative then | if negative then | ||
Line 1,159: | Line 1,175: | ||
end | end | ||
end | end | ||
local s = spell_number(parms, inout, wholestr, numstr, denstr) | |||
if s then | |||
return s | |||
end | |||
end | end | ||
add_style(parms, fracfmt[style].style) | |||
return wikitext | return wikitext | ||
end | end | ||
Line 3,660: | Line 3,680: | ||
wikitext = wikitext .. parms.warnings | wikitext = wikitext .. parms.warnings | ||
end | end | ||
return true, wikitext, out_unit_table | return true, get_styles(parms) .. wikitext, out_unit_table | ||
end | end | ||