The wiki has moved!

Visit the new wiki at stationeers-wiki.com The old wiki here at legacy.stationeers-wiki.com will sunset eventually.

Edits made after the 7th of March 6PM EST were NOT carried over to the new server as previously announced right here in this box.

 Actions

Module

Difference between revisions of "Lua banner"

From Unofficial Stationeers Wiki

(create replacement for Template:Lua)
 
(fix pattern bug in p.main, and use a separate table for making the module links)
Line 12: Line 12:
 
local args = {}
 
local args = {}
 
for k, v in pairs(origArgs) do
 
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*')
+
v = v:match('^%s*(.-)%s*$')
 
if v ~= '' then
 
if v ~= '' then
 
args[k] = v
 
args[k] = v
Line 32: Line 32:
 
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
 
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
 
else
 
else
local moduleList = mList.makeList('bulleted', modules)
+
local moduleLinks = {}
 +
for i, module in ipairs(modules) do
 +
moduleLinks[i] = string.format('[[:%s]]', module)
 +
end
 +
local moduleList = mList.makeList('bulleted', moduleLinks)
 
boxArgs.text = 'Uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
 
boxArgs.text = 'Uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
 
end
 
end

Revision as of 02:04, 3 June 2014

Documentation for this module may be created at Module:Lua banner/doc

-- This module implements the {{lua}} template.

local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')

local p = {}

function p.main(frame)
	local origArgs = frame:getParent().args
	local args = {}
	for k, v in pairs(origArgs) do
		v = v:match('^%s*(.-)%s*$')
		if v ~= '' then
			args[k] = v
		end
	end
	return p._main(args)
end

function p._main(args)
	local modules = mTableTools.compressSparseArray(args)
	local box = p.renderBox(modules)
	local trackingCategories = p.renderTrackingCategories(args, modules)
	return box .. trackingCategories
end

function p.renderBox(modules)
	local boxArgs = {}
	if #modules < 1 then
		boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
	else
		local moduleLinks = {}
		for i, module in ipairs(modules) do
			moduleLinks[i] = string.format('[[:%s]]', module)
		end
		local moduleList = mList.makeList('bulleted', moduleLinks)
		boxArgs.text = 'Uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
	end
	boxArgs.type = 'notice'
	boxArgs.small = true
	boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=Lua logo|link=Wikipedia:Lua]]'
	return mMessageBox.main('mbox', boxArgs)
end

function p.renderTrackingCategories(args, modules, titleObj)
	if yesno(args.nocat) then
		return ''
	end
	
	local cats = {}
	
	-- Error category
	if #modules < 1 then
		cats[#cats + 1] = 'Lua templates with errors'
	end
	
	-- Lua templates category
	local titleObj = titleObj or mw.title.getCurrentTitle()
	local subpageBlacklist = {
		doc = true,
		sandbox = true,
		sandbox2 = true,
		testcases = true
	}
	if titleObj.namespace == 10 
		and not subpageBlacklist[titleObj.subpageText]
	then
		local category = args.category
		if not category then
			local categories = {
				['Module:String'] = 'Lua String-based templates',
				['Module:Math'] = 'Templates based on the Math Lua module',
				['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
				['Module:Citation'] = 'Lua-based citation templates'
			}
			categories['Module:Citation/CS1'] = categories['Module:Citation']
			category = modules[1] and categories[modules[1]]
			category = category or 'Lua-based templates'
		end
		cats[#cats + 1] = category
	end
	
	for i, cat in ipairs(cats) do
		cats[i] = string.format('[[Category:%s]]', cat)
	end
	return table.concat(cats)
end

return p