Difference between revisions of "Module:Jctbtm/sandbox"

From blackwiki
Jump to navigation Jump to search
blackwiki>Jackmcbarn
(sync)
blackwiki>Jackmcbarn
(use mw.html)
Line 2: Line 2:
  
 
local types = mw.loadData("Module:Road data/RJL types")
 
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 getArgs = require('Module:Arguments').getArgs -- Import module function to work with passed arguments
  
Line 23: Line 22:
 
local function createLegend(key)
 
local function createLegend(key)
 
local format = mw.ustring.format
 
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')
+
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
 
for k,v in ipairs(key) do
 
local type = types[v]
 
local type = types[v]
 
if type then
 
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)
+
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
 
end
Line 33: Line 32:
  
 
function p._jctbtm(args)
 
function p._jctbtm(args)
local root = HtmlBuilder.create()
+
local root = mw.html.create()
row = root.tag('tr').tag('td')
+
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.
 
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.
+
row:attr('colspan', cols):attr('class', "wikitable hlist"):css("text-align", "center"):css("background-color", "#f2f2f2") -- Define the footer.
 
 
 
local conversion
 
local conversion
Line 43: Line 42:
 
conversion = "1.000&nbsp;mi = 1.609&nbsp;km; 1.000&nbsp;km = 0.621&nbsp;mi<br>"
 
conversion = "1.000&nbsp;mi = 1.609&nbsp;km; 1.000&nbsp;km = 0.621&nbsp;mi<br>"
 
end
 
end
row.wikitext(conversion)
+
row:wikitext(conversion)
 
 
 
local key = parameterParser(args)
 
local key = parameterParser(args)
Line 52: Line 51:
 
local page = mw.title.getCurrentTitle()
 
local page = mw.title.getCurrentTitle()
 
local pagename = page.prefixedText
 
local pagename = page.prefixedText
row.wikitext(string.format("[[Category:Jctbtm temporary tracking category|# %s]]", pagename))
+
row:wikitext(string.format("[[Category:Jctbtm temporary tracking category|# %s]]", pagename))
 
end
 
end
 
 
 
local notes = args.notes or args.key
 
local notes = args.notes or args.key
row.wikitext(notes) -- If additional notes are provided, display them.
+
row:wikitext(notes) -- If additional notes are provided, display them.
 
 
 
local nodes = row.nodes
 
local nodes = row.nodes

Revision as of 01:27, 5 December 2014

Documentation for this module may be created at Module:Jctbtm/sandbox/doc

local p = {}

local types = mw.loadData("Module:Road data/RJL types")
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("&nbsp;&nbsp;&nbsp;&nbsp;"):done():wikitext("&nbsp; "):wikitext(type.jctbtm)
		end
	end
end

function p._jctbtm(args)
	local root = mw.html.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&nbsp;mi = 1.609&nbsp;km; 1.000&nbsp;km = 0.621&nbsp;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