local p = {}
local types = mw.loadData("Module:Road data/RJL types")
local columns = { -- Constants for how many columns different list types should have.
default = 6, -- default
exit = 7, -- default + exit number
old = 8, -- default + exit number + old exit number
}
local function parameterParser(args)
local keysParam = args.keys
if not(keysParam) then return {} end
local keys = mw.text.split(keysParam, ",")
table.sort(keys)
return keys
end
local function createLegend(key)
local insert = table.insert
local format = mw.ustring.format
local legend = {'<div class="hlist" style="margin-left: 1.6em; text-align: center; font-size:90%;">'}
for k,v in ipairs(key) do
local type = types[v]
if type then
insert(legend, format('*<span style="border:1px solid #000; background-color:%s; color:%s;"> </span> %s', type.color, type.color, type.jctbtm))
end
end
insert(legend, "</div>")
return table.concat(legend, "\n")
end
function p.jctbtm(frame)
local pframe = frame:getParent()
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself
local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template
local cols = args.col or columns[args[1]] or columns.default -- Compute the number of columns, either from an explicit parameter, or by looking at the columns table.
local tabdef = '|-\n|colspan = ' .. cols .. ' class="wikitable hlist" style="text-align: center; background-color:#f2f2f2;"|' -- Define the table.
local conversion = ''
local conv = args.conv or 'yes'
if conv == 'yes' then
conversion = "1.000 mi = 1.609 km; 1.000 km = 0.621 mi<br>"
end
local text = tabdef .. conversion
local key = parameterParser(args)
if key[1] then
local legend = createLegend(key)
text = text .. legend
end
local keyParam = args.key or ''
if keyParam ~= '' then -- This is a deprecated parameter
local page = mw.title.getCurrentTitle()
local pagename = page.prefixedText
text = text .. string.format("[[Category:Jctbtm temporary tracking category|# %s]]", pagename)
end
local notes = args.notes or args.key or ''
if notes ~= '' then
text = text .. notes -- If additional notes are provided, display them.
end
if text == tabdef then
return "|}"
else
return text .. "\n|}"
end
end
return p