Module:Lua: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
>Vinifera7 No edit summary |
||
Line 50: | Line 50: | ||
end | end | ||
function p.renderTrackingCategories(args, modules, | function p.renderTrackingCategories(args, modules, title) | ||
if yesno(args.nocat) then | if yesno(args.nocat) then | ||
return '' | return '' | ||
end | end | ||
local cats = {} | local cats = {} | ||
local subpageBlacklist = { | local subpageBlacklist = { | ||
doc = true, | doc = true, | ||
Line 70: | Line 61: | ||
testcases = true | testcases = true | ||
} | } | ||
if not subpageBlacklist[ | title = title or mw.title.getCurrentTitle() | ||
if not subpageBlacklist[title.subpageText] then | |||
local protCatName | local protCatName | ||
if | if title.namespace == 10 then | ||
local category = args.category or 'Lua-based templates' | local category = args.category or 'Lua-based templates' | ||
cats[#cats + 1] = category | cats[#cats + 1] = category | ||
protCatName = 'Templates using under-protected modules' | protCatName = 'Templates using under-protected modules' | ||
elseif | elseif title.namespace == 828 then | ||
protCatName = 'Modules depending on under-protected modules' | protCatName = 'Modules depending on under-protected modules' | ||
end | end | ||
Line 87: | Line 79: | ||
} | } | ||
local currentProt | local currentProt | ||
if | if title.id ~= 0 then | ||
-- id is 0 (page does not exist) if am previewing before creating a template. | -- id is 0 (page does not exist) if am previewing before creating a template. | ||
currentProt = | currentProt = title.protectionLevels["edit"][1] | ||
end | end | ||
if currentProt == nil then | if currentProt == nil then |
Revision as of 04:43, 28 July 2020
Lua error in package.lua at line 80: module 'Module:List' not found.
Implements {{Lua}}.
This module was adapted from Module:Lua banner on Wikipedia.
Adaptation is noted for reference and attribution only. This module may differ from the original in function or in usage. The documentation on Wikipedia may be helpful in understanding this module.
Adaptation is noted for reference and attribution only. This module may differ from the original in function or in usage. The documentation on Wikipedia may be helpful in understanding this module.
The above documentation is transcluded from Module:Lua/doc.
Editors can experiment in this module's sandbox and testcases pages.
Subpages of this module.
Editors can experiment in this module's sandbox and testcases pages.
Subpages of this module.
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local p = {}
function p.main(frame)
local args = getArgs(frame, {
wrappers = 'Template:Lua'
})
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)
local maybeSandbox = mw.title.new(module .. '/sandbox')
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText)
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
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:\n' .. moduleList
else
boxArgs.text = 'This template uses the following modules:\n' .. moduleList
end
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Lua programming language logo.svg|30px|alt=Lua logo|link=]]'
return mMessageBox.main('mbox', boxArgs)
end
function p.renderTrackingCategories(args, modules, title)
if yesno(args.nocat) then
return ''
end
local cats = {}
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
title = title or mw.title.getCurrentTitle()
if not subpageBlacklist[title.subpageText] then
local protCatName
if title.namespace == 10 then
local category = args.category or 'Lua-based templates'
cats[#cats + 1] = category
protCatName = 'Templates using under-protected modules'
elseif title.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 title.id ~= 0 then
-- id is 0 (page does not exist) if am previewing before creating a template.
currentProt = title.protectionLevels["edit"][1]
end
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] = protCatName
break
end
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