Module:Lua banner:修订间差异
外观
zhwiki>A2569875 小 Module:TrackingCategory不要重造輪子。 标签:已被回退 |
CaelLab-import(留言 | 贡献) 还原为 2026-08-03 版:2026-10-04 换成 zhwiki 版后丢了求闻版独有的 main3,而 Template:Uses Lua 仍在调 {{#invoke:Lua banner|main3}} 标签:手工回退 |
||
| 第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/sandbox') | ||
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 | local subpageBlacklist = { | ||
doc = true, | |||
sandbox = true, | |||
sandbox2 = true, | |||
testcases = true | |||
} | |||
local p = {} | local p = {} | ||
function | local function argToLink(t) | ||
-- 将单个参数转化为通往模块的链接。例如将abc转化为模块:Abc|Abc,如果手动添加了模块名字空间也无妨。 | |||
local | local title = mw.title.new(t, 828) | ||
return string.format('[[%s|%s]]',tostring(title),tostring(t)) | |||
end | end | ||
function p. | function p.main3(frame) | ||
local | local args = (getArgs(frame)) | ||
local currentTitle = mw.title.getCurrentTitle() | |||
local items = {} | |||
for k,v in mTableTools.sparseIpairs(args) do | |||
table.insert(items, {content = v}) | |||
end | |||
if #items==0 then | |||
table.insert(items, {content = subpageBlacklist[currentTitle.subpageText] and currentTitle.baseText or currentTitle.text}) | |||
local | |||
local | |||
for k, v in | |||
end | end | ||
return mList.renderList { | |||
items = items, | |||
modify = argToLink | |||
} .. p.renderTrackingCategories(args, args, currentTitle) -- 省略第三个参数titleObj | |||
end | end | ||
function p.renderBox(modules) | -- function p.main(frame) | ||
local boxArgs = {} | -- local origArgs = frame:getParent().args | ||
if #modules < 1 then | -- local args = {} | ||
boxArgs.text = '<strong class="error"> | -- for k, v in pairs(origArgs) do | ||
else | -- v = v:match('^%s*(.-)%s*$') | ||
local moduleLinks = {} | -- if v ~= '' then | ||
for i, module in ipairs(modules) do | -- args[k] = v | ||
moduleLinks[i] = string.format('%s', module) | -- end | ||
moduleLinks[i] = '[[:Module:' .. mw.title.new(moduleLinks[i]).text .. ']]' | -- end | ||
-- return p._main(frame, args) | |||
-- end | |||
-- function p._main(frame, args) | |||
-- local modules = mTableTools.compressSparseArray(args) | |||
local moduleList = mList.makeList('bulleted', moduleLinks) | -- local box = p.renderBox(modules) | ||
boxArgs.text = '此' .. | -- local trackingCategories = p.renderTrackingCategories(args, modules) | ||
(mw.title.getCurrentTitle():inNamespaces(828,829) and '-{zh-hans:模块; zh-hant:模組;}-' or '模板') .. | -- return box .. trackingCategories | ||
'使用[[ | -- end | ||
end | -- -- if action=edit | ||
boxArgs.type = 'notice' | -- function p.main2(frame) | ||
boxArgs.small = true | -- local origArgs = frame:getParent().args | ||
boxArgs.image = '[[File:Lua- | -- local args = {} | ||
return mMessageBox.main('mbox', boxArgs) | -- for k, v in pairs(origArgs) do | ||
end | -- 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) | ||
| 第84行: | 第108行: | ||
-- 错误分类 | -- 错误分类 | ||
if #modules < 1 then | -- if #modules < 1 then | ||
-- cats[#cats + 1] = '有错误的Lua模板' | |||
end | -- end | ||
-- Lua templates category | -- Lua templates category | ||
titleObj = titleObj or mw.title.getCurrentTitle() | titleObj = titleObj or mw.title.getCurrentTitle() | ||
if titleObj.namespace == 10 | if titleObj.namespace == 10 | ||
and not subpageBlacklist[titleObj.subpageText] | and not subpageBlacklist[titleObj.subpageText] | ||
then | then | ||
cats[#cats + 1] = ' | cats[#cats + 1] = '基于Lua模块编写的模板' | ||
end | end | ||
for i, cat in ipairs(cats) do | for i, cat in ipairs(cats) do | ||
cats[i] = string.format('[[Category:%s]]', cat) | |||
end | end | ||
return table.concat(cats) | |||
end | end | ||
return p | return p | ||
2026年10月14日 (三) 10:31的最新版本
本模块用于执行{{Lua}}模板。
通过wikitext使用
[编辑源代码]本模块不能直接被wikitext使用,只能通过{{Lua}}模板调用。请参阅模板说明书。
通过Lua模块使用
[编辑源代码]为通过其他Lua模块使用本模块,先要载入本模块。
local mLuaBanner = require('Module:Lua banner')
然后可以通过_main功能生成边框。
mLuaBanner._main(args)
追踪分类
[编辑源代码]--[=[
这个模块由[[Template:Lua]]调用
暂无模块调用
/****************************/
這個模組由[[Template:Lua]]調用
暫無模組調用
]=]--
local yesno = require('Module:Yesno')
local mList = require('Module:List/sandbox')
local mTableTools = require('Module:TableTools')
local getArgs = require "Module:Arguments".getArgs
local mMessageBox = require('Module:Message box')
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
local p = {}
local function argToLink(t)
-- 将单个参数转化为通往模块的链接。例如将abc转化为模块:Abc|Abc,如果手动添加了模块名字空间也无妨。
local title = mw.title.new(t, 828)
return string.format('[[%s|%s]]',tostring(title),tostring(t))
end
function p.main3(frame)
local args = (getArgs(frame))
local currentTitle = mw.title.getCurrentTitle()
local items = {}
for k,v in mTableTools.sparseIpairs(args) do
table.insert(items, {content = v})
end
if #items==0 then
table.insert(items, {content = subpageBlacklist[currentTitle.subpageText] and currentTitle.baseText or currentTitle.text})
end
return mList.renderList {
items = items,
modify = argToLink
} .. p.renderTrackingCategories(args, args, currentTitle) -- 省略第三个参数titleObj
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)
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()
if titleObj.namespace == 10
and not subpageBlacklist[titleObj.subpageText]
then
cats[#cats + 1] = '基于Lua模块编写的模板'
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
return p