Module:Jctbtm
Documentation for this module may be created at Module:Jctbtm/doc
local p = {} local types = mw.loadData("Module:Road data/RJL types") local HtmlBuilder = require "Module:HtmlBuilder" -- Import module to build HTML code local getArgs = require('Module:Arguments').getArgs -- Import module function to work with passed arguments local row 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 format = mw.ustring.format local legend = row.tag('div').attr('class', "hlist").cssText("margin-left: 1.6em; text-align: center; font-size:90%;").tag('ul') for k,v in ipairs(key) do local type = types[v] if type then legend.tag('li').tag('span').css('border', '1px solid #000').css('background-color', type.color).css('color', type.color).wikitext(" ").done().wikitext(" ").wikitext(type.jctbtm) end end end function p._jctbtm(args) local root = HtmlBuilder.create() row = root.tag('tr').tag('td') 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. row.attr('colspan', cols).attr('class', "wikitable hlist").css("text-align", "center").css("background-color", "#f2f2f2") -- Define the footer. 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 row.wikitext(conversion) local key = parameterParser(args) if key[1] then createLegend(key) end local keyParam = args.key if keyParam then -- This is a deprecated parameter local page = mw.title.getCurrentTitle() local pagename = page.prefixedText row.wikitext(string.format("[[Category:Jctbtm temporary tracking category|# %s]]", pagename)) end local notes = args.notes or args.key row.wikitext(notes) -- If additional notes are provided, display them. local nodes = row.nodes if #nodes == 0 then return '|-\n|}' else return tostring(root) .. '\n|-\n|}' end end function p.jctbtm(frame) local args = getArgs(frame) return p._jctbtm(args) end return p