Editing Module:Lua banner
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
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') | ||
local mTableTools = require('Module:TableTools') | local mTableTools = require('Module:TableTools') | ||
local mMessageBox = require('Module:Message box') | local mMessageBox = require('Module:Message box') | ||
local p = {} | local p = {} | ||
function p.main(frame) | function p.main(frame) | ||
Line 29: | Line 19: | ||
end | end | ||
function p._main(args | function p._main(args) | ||
local modules = mTableTools.compressSparseArray(args) | local modules = mTableTools.compressSparseArray(args) | ||
local box = p.renderBox(modules | local box = p.renderBox(modules) | ||
local trackingCategories = p.renderTrackingCategories(args, modules | local trackingCategories = p.renderTrackingCategories(args, modules) | ||
return box .. trackingCategories | return box .. trackingCategories | ||
end | end | ||
function p.renderBox(modules | function p.renderBox(modules) | ||
local boxArgs = {} | local boxArgs = {} | ||
if #modules < 1 then | if #modules < 1 then | ||
boxArgs.text = '<strong class="error">Error: no modules specified</strong>' | |||
else | else | ||
local moduleLinks = {} | local moduleLinks = {} | ||
for i, module in ipairs(modules) do | for i, module in ipairs(modules) do | ||
moduleLinks[i] = string.format('[[:%s]]', module) | moduleLinks[i] = string.format('[[:%s]]', module) | ||
local maybeSandbox = mw.title.new(module .. '/sandbox') | |||
if maybeSandbox.exists then | |||
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText) | |||
end | |||
end | end | ||
local moduleList = mList.makeList('bulleted', moduleLinks) | local moduleList = mList.makeList('bulleted', moduleLinks) | ||
boxArgs.text = | local title = mw.title.getCurrentTitle() | ||
if title.subpageText == "doc" then | |||
title = title.basePageTitle | |||
end | |||
if title.contentModel == "Scribunto" then | |||
boxArgs.text = 'This module depends on the following other modules:' .. moduleList | |||
else | |||
boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList | |||
end | |||
end | end | ||
boxArgs.type = 'notice' | boxArgs.type = 'notice' | ||
boxArgs.small = true | boxArgs.small = true | ||
boxArgs.image = | boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=|link=]]' | ||
return mMessageBox.main('mbox', boxArgs) | return mMessageBox.main('mbox', boxArgs) | ||
end | end | ||
function p.renderTrackingCategories(args, modules, titleObj | function p.renderTrackingCategories(args, modules, titleObj) | ||
if yesno(args.nocat) then | if yesno(args.nocat) then | ||
return '' | return '' | ||
end | end | ||
local cats = {} | local cats = {} | ||
-- Error category | -- Error category | ||
if #modules < 1 | if #modules < 1 then | ||
cats[#cats + 1] = | cats[#cats + 1] = 'Lua templates with errors' | ||
end | end | ||
-- Lua templates category | -- Lua templates category | ||
titleObj = titleObj or mw.title.getCurrentTitle() | titleObj = titleObj or mw.title.getCurrentTitle() | ||
local subpageBlacklist = { | |||
doc = true, | |||
sandbox = true, | |||
local | sandbox2 = true, | ||
if | testcases = true | ||
local | } | ||
if not subpageBlacklist[titleObj.subpageText] then | |||
local protCatName | |||
if titleObj.namespace == 10 then | |||
local category = args.category | |||
if not category then | if not category then | ||
local categories = { | |||
['Module:String'] = 'Lua String-based templates', | |||
else | ['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 | |||
protCatName = "Templates using under-protected Lua modules" | |||
elseif titleObj.namespace == 828 then | |||
protCatName = "Modules depending on under-protected modules" | |||
end | |||
if not args.noprotcat and protCatName then | |||
local protLevels = { | |||
autoconfirmed = 1, | |||
extendedconfirmed = 2, | |||
templateeditor = 3, | |||
sysop = 4 | |||
} | |||
local currentProt | |||
if titleObj.id ~= 0 then | |||
-- id is 0 (page does not exist) if am previewing before creating a template. | |||
currentProt = titleObj.protectionLevels["edit"][1] | |||
end | |||
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end | |||
for i, module in ipairs(modules) do | |||
if module ~= "WP:libraryUtil" then | |||
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] = protCatName | |||
break | |||
end | |||
end | end | ||
end | end | ||
end | end | ||
end | end | ||
for i, cat in ipairs(cats) do | for i, cat in ipairs(cats) do | ||
cats[i] = string.format('[[Category:%s]]', cat) | cats[i] = string.format('[[Category:%s]]', cat) |