小 (已保护“Module:Lua banner”:机器用户批量保护高风险模板([编辑=仅允许模板编辑员](无限期)[移动=仅允许模板编辑员](无限期))) |
小 (导入1个版本:维基百科的按钮模板) 标签:已被回退 |
||
第1行: | 第1行: | ||
--[=[ |
--[=[ |
||
本模块由[[Template:Lua]]调用 |
|||
暂无模块调用 |
暂无模块调用 |
||
/****************************/ |
/****************************/ |
||
本模組由[[Template:Lua]]調用 |
|||
暫無模組調用 |
暫無模組調用 |
||
第10行: | 第10行: | ||
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 getArgs = require "Module:Arguments".getArgs |
|||
local mMessageBox = require('Module:Message box') |
local mMessageBox = require('Module:Message box') |
||
local subpageBlacklist = { |
|||
doc = true, |
|||
sandbox = true, |
|||
sandbox2 = true, |
|||
testcases = true |
|||
} |
|||
local p = {} |
local p = {} |
||
function p.main(frame) |
|||
local origArgs = frame:getParent().args |
|||
-- 将单个参数转化为通往模块的链接。例如将abc转化为模块:Abc|Abc,如果手动添加了模块名字空间也无妨。 |
|||
local |
local args = {} |
||
for k, v in pairs(origArgs) do |
|||
return string.format('[[%s|%s]]',tostring(title),tostring(t)) |
|||
v = v:match('^%s*(.-)%s*$') |
|||
if v ~= '' then |
|||
args[k] = v |
|||
end |
|||
end |
|||
return p._main(frame, args) |
|||
end |
|||
function p._main(frame, args) |
|||
local modules = mTableTools.compressSparseArray(args) |
|||
local box = p.renderBox(modules) |
|||
local trackingCategories = p.renderTrackingCategories(args, modules) |
|||
return box .. trackingCategories |
|||
end |
|||
-- if action=edit |
|||
function p.main2(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 |
|||
local modules = mTableTools.compressSparseArray(args) |
|||
return p.renderBox(modules) |
|||
end |
end |
||
--end |
|||
function p. |
function p.renderBox(modules) |
||
local |
local boxArgs = {} |
||
if #modules < 1 then |
|||
local currentTitle = mw.title.getCurrentTitle() |
|||
boxArgs.text = '<strong class="error">错误:未指定-{zh-hans:模块; zh-hant:模組;}-</strong>' |
|||
local items = {} |
|||
else |
|||
for k,v in mTableTools.sparseIpairs(args) do |
|||
local moduleLinks = {} |
|||
table.insert(items, {content = v}) |
|||
for i, module in ipairs(modules) do |
|||
moduleLinks[i] = string.format('%s', module) |
|||
moduleLinks[i] = '[[:Module:' .. mw.title.new(moduleLinks[i]).text .. ']]' |
|||
local maybeSandbox = mw.title.new(module .. '/sandbox') |
|||
if maybeSandbox.exists then |
|||
moduleLinks[i] = moduleLinks[i] .. string.format('([[:%s|沙盒]])', maybeSandbox.fullText) |
|||
end |
|||
end |
|||
local moduleList = mList.makeList('bulleted', moduleLinks) |
|||
boxArgs.text = '本' .. |
|||
(mw.title.getCurrentTitle():inNamespaces(828,829) and '-{zh-hans:模块; zh-hant:模組;}-' or '模板') .. |
|||
'使用 [[Wikipedia:Lua|Lua 语言]]:\n' .. moduleList |
|||
end |
end |
||
boxArgs.type = 'notice' |
|||
if #items==0 then |
|||
boxArgs.small = true |
|||
table.insert(items, {content = subpageBlacklist[currentTitle.subpageText] and currentTitle.baseText or currentTitle.text}) |
|||
boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]' |
|||
end |
|||
return |
return mMessageBox.main('mbox', boxArgs) |
||
items = items, |
|||
modify = argToLink |
|||
} .. p.renderTrackingCategories(args, args, currentTitle) -- 省略第三个参数titleObj |
|||
end |
end |
||
-- 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(frame, args) |
|||
-- end |
|||
-- function p._main(frame, args) |
|||
-- local modules = mTableTools.compressSparseArray(args) |
|||
-- local box = p.renderBox(modules) |
|||
-- local trackingCategories = p.renderTrackingCategories(args, modules) |
|||
-- return box .. trackingCategories |
|||
-- end |
|||
-- -- if action=edit |
|||
-- function p.main2(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 |
|||
-- local modules = mTableTools.compressSparseArray(args) |
|||
-- return p.renderBox(modules) |
|||
-- end |
|||
-- --end |
|||
-- function p.renderBox(modules) |
|||
-- local boxArgs = {} |
|||
-- if #modules < 1 then |
|||
-- boxArgs.text = '<strong class="error">错误:没有指定-{zh-hans:模块; zh-hant:模組;}-</strong>' |
|||
-- else |
|||
-- local moduleLinks = {} |
|||
-- for i, module in ipairs(modules) do |
|||
-- moduleLinks[i] = string.format('%s', module) |
|||
-- moduleLinks[i] = '[[:Module:' .. mw.title.new(moduleLinks[i]).text .. ']]' |
|||
-- end |
|||
-- local moduleList = mList.makeList('bulleted', moduleLinks) |
|||
-- boxArgs.text = '此' .. |
|||
-- (mw.title.getCurrentTitle():inNamespaces(828,829) and '-{zh-hans:模块; zh-hant:模組;}-' or '模板') .. |
|||
-- '使用[[Qiuwen: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) |
function p.renderTrackingCategories(args, modules, titleObj) |
||
第108行: | 第82行: | ||
-- 错误分类 |
-- 错误分类 |
||
if #modules < 1 then |
|||
cats[#cats + 1] = '有错误的Lua模板' |
|||
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, |
|||
sandbox2 = true, |
|||
testcases = true |
|||
} |
|||
if titleObj.namespace == 10 |
if titleObj.namespace == 10 |
||
and not subpageBlacklist[titleObj.subpageText] |
and not subpageBlacklist[titleObj.subpageText] |
||
then |
then |
||
local category = args.category |
|||
cats[#cats + 1] = '基于Lua模块编写的模板' |
|||
if not category then |
|||
local categories = { |
|||
['Module:String'] = '使用Module:String的模板', |
|||
--['Module:Math'] = '使用LuaMath的模板', |
|||
--['Module:BaseConvert'] = '使用LuaBaseConvert的模板', |
|||
--['Module:Citation'] = '使用LuaCitation的模板' |
|||
} |
|||
categories['Module:Citation/CS1'] = categories['Module:Citation'] |
|||
category = modules[1] and categories[modules[1]] |
|||
category = category or 'x' |
|||
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 |
|||
if mw.title.new(module).protectionLevels["edit"] 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] = "使用受保护Lua模块的模板" |
|||
break |
|||
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.gsub(string.format('[[Category:%s]]', cat), '%[%[Category:x%]%]', '') |
||
end |
end |
||
return table.concat(cats) |
return table.concat(cats) .. '[[Category:Lua模板]]' |
||
end |
end |
||
2023年3月24日 (五) 23:39的版本
--[=[
本模块由[[Template:Lua]]调用
暂无模块调用
/****************************/
本模組由[[Template:Lua]]調用
暫無模組調用
]=]--
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(frame, args)
end
function p._main(frame, args)
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules)
local trackingCategories = p.renderTrackingCategories(args, modules)
return box .. trackingCategories
end
-- if action=edit
function p.main2(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
local modules = mTableTools.compressSparseArray(args)
return p.renderBox(modules)
end
--end
function p.renderBox(modules)
local boxArgs = {}
if #modules < 1 then
boxArgs.text = '<strong class="error">错误:未指定-{zh-hans:模块; zh-hant:模組;}-</strong>'
else
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('%s', module)
moduleLinks[i] = '[[:Module:' .. mw.title.new(moduleLinks[i]).text .. ']]'
local maybeSandbox = mw.title.new(module .. '/sandbox')
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format('([[:%s|沙盒]])', maybeSandbox.fullText)
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
boxArgs.text = '本' ..
(mw.title.getCurrentTitle():inNamespaces(828,829) and '-{zh-hans:模块; zh-hant:模組;}-' or '模板') ..
'使用 [[Wikipedia:Lua|Lua 语言]]:\n' .. moduleList
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Lua-Logo.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 = {}
-- 错误分类
if #modules < 1 then
cats[#cats + 1] = '有错误的Lua模板'
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'] = '使用Module:String的模板',
--['Module:Math'] = '使用LuaMath的模板',
--['Module:BaseConvert'] = '使用LuaBaseConvert的模板',
--['Module:Citation'] = '使用LuaCitation的模板'
}
categories['Module:Citation/CS1'] = categories['Module:Citation']
category = modules[1] and categories[modules[1]]
category = category or 'x'
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
if mw.title.new(module).protectionLevels["edit"] 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] = "使用受保护Lua模块的模板"
break
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.gsub(string.format('[[Category:%s]]', cat), '%[%[Category:x%]%]', '')
end
return table.concat(cats) .. '[[Category:Lua模板]]'
end
return p