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)
 
m (9 revisions imported)
 
(12 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 
-- This module implements the {{lua}} template.
 
-- This module implements the {{lua}} template.
 
 
local yesno = require('Module:Yesno')
 
local yesno = require('Module:Yesno')
 
local mList = require('Module:List')
 
local mList = require('Module:List')
Line 12: Line 11:
 
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 31:
 
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 = {}
boxArgs.text = 'Uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
+
for i, module in ipairs(modules) do
 +
moduleLinks[i] = string.format('[[:%s]]', module)
 +
end
 +
local moduleList = mList.makeList('bulleted', moduleLinks)
 +
boxArgs.text = 'This ' ..
 +
(mw.title.getCurrentTitle():inNamespaces(828,829) and 'module' or 'template') ..
 +
' uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
 
end
 
end
 
boxArgs.type = 'notice'
 
boxArgs.type = 'notice'
 
boxArgs.small = true
 
boxArgs.small = true
boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=Lua logo|link=Wikipedia:Lua]]'
+
boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=|link=]]'
 
return mMessageBox.main('mbox', boxArgs)
 
return mMessageBox.main('mbox', boxArgs)
 
end
 
end
Line 54: Line 59:
 
 
 
-- Lua templates category
 
-- Lua templates category
local titleObj = titleObj or mw.title.getCurrentTitle()
+
titleObj = titleObj or mw.title.getCurrentTitle()
 
local subpageBlacklist = {
 
local subpageBlacklist = {
 
doc = true,
 
doc = true,
Line 77: Line 82:
 
end
 
end
 
cats[#cats + 1] = category
 
cats[#cats + 1] = category
 +
local protLevels = {
 +
autoconfirmed = 1,
 +
extendedconfirmed = 2,
 +
templateeditor = 3,
 +
sysop = 4
 +
}
 +
local currentProt = titleObj.protectionLevels["edit"][1]
 +
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
 +
for i, module in ipairs(modules) do
 +
local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
 +
if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
 +
if moduleProt < currentProt then
 +
cats[#cats + 1] = "Templates using under-protected Lua modules"
 +
break
 +
end
 +
end
 
end
 
end
 
 

Latest revision as of 15:04, 14 July 2018

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 = 'This ' .. 
			(mw.title.getCurrentTitle():inNamespaces(828,829) and 'module' or 'template') ..
			' uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
	end
	boxArgs.type = 'notice'
	boxArgs.small = true
	boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=|link=]]'
	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
	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
		local protLevels = {
			autoconfirmed = 1,
			extendedconfirmed = 2,
			templateeditor = 3,
			sysop = 4
		}
		local currentProt = titleObj.protectionLevels["edit"][1]
		if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
		for i, module in ipairs(modules) do
			local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
			if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
			if moduleProt < currentProt then
				cats[#cats + 1] = "Templates using under-protected Lua modules"
				break
			end
		end
	end
	
	for i, cat in ipairs(cats) do
		cats[i] = string.format('[[Category:%s]]', cat)
	end
	return table.concat(cats)
end

return p