Difference between revisions of "Module:Jctbtm"
Jump to navigation
Jump to search
blackwiki>Rschen7754 m (Changed protection level of Module:Jctbtm: High-risk Lua module ([Edit=Allow only template editors and admins] (indefinite) [Move=Block all non-admin users] (indefinite))) |
blackwiki>Happy5214 (Sync with sandbox: Use HTML instead of wikitext for table close; type definitions now in separate module; general fixes and cleanup.) |
||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
| − | local | + | 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 | + | local row |
| − | |||
| − | |||
local columns = { -- Constants for how many columns different list types should have. | 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 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 | end | ||
local function createLegend(key) | 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 '</table>' | ||
| + | else | ||
| + | return tostring(root.tag('/table', {unclosed = true}).allDone()) | ||
| + | end | ||
end | end | ||
function p.jctbtm(frame) | function p.jctbtm(frame) | ||
| − | + | local args = getArgs(frame) | |
| − | + | return p._jctbtm(args) | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
end | end | ||
return p | return p | ||
Revision as of 07:13, 13 January 2014
This module implements the {{Jctbtm}} template. Please see the template page for usage instructions.
Usage
{{#invoke:Jctbtm|jctbtm}}
Tracking/maintenance category
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 '</table>'
else
return tostring(root.tag('/table', {unclosed = true}).allDone())
end
end
function p.jctbtm(frame)
local args = getArgs(frame)
return p._jctbtm(args)
end
return p