[dismiss]
The wiki is currently a work in progress. If you'd like to help out, please check the Community Portal and our getting started guide. Also, check out our sister project on poewiki.net.
Module:Lua: Difference between revisions
Jump to navigation
Jump to search
>OmegaK2 mNo edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
local mList = require('Module:List') | |||
local mTableTools = require('Module:TableTools') | |||
local mMessageBox = require('Module:Message box') | |||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
local | local yesno = require('Module:Yesno') | ||
local p = {} | local p = {} | ||
function p.main(frame) | function p.main(frame) | ||
local args = getArgs(frame, { | |||
wrappers = 'Template:Lua' | |||
}) | |||
return p._main(args) | |||
end | end | ||
function p._main(args) | 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, titleObj) | |||
if yesno(args.nocat) then | |||
return '' | |||
end | |||
local cats = {} | |||
-- Error category | |||
if #modules < 1 then | |||
cats[#cats + 1] = 'Lua-based templates with errors' | |||
end | |||
-- Lua templates category | |||
titleObj = titleObj or mw.title.getCurrentTitle() | |||
local subpageBlacklist = { | |||
doc = true, | |||
sandbox = true, | |||
sandbox2 = true, | |||
testcases = true | |||
} | |||
if not subpageBlacklist[titleObj.subpageText] then | |||
local protCatName | |||
if titleObj.namespace == 10 then | |||
local category = args.category or 'Lua-based templates' | |||
cats[#cats + 1] = category | |||
protCatName = 'Templates using under-protected 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 | |||
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 | end | ||
return p | return p |
Revision as of 23:52, 26 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, titleObj)
if yesno(args.nocat) then
return ''
end
local cats = {}
-- Error category
if #modules < 1 then
cats[#cats + 1] = 'Lua-based templates with errors'
end
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
if not subpageBlacklist[titleObj.subpageText] then
local protCatName
if titleObj.namespace == 10 then
local category = args.category or 'Lua-based templates'
cats[#cats + 1] = category
protCatName = 'Templates using under-protected 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
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