模組:Namespace/ForEach
外观

概要
由Module:TemplateParameters#getFormatingStringByArgument擴展而來的用法,用來大量印出一樣的命名空間資料,如Wikipedia:编辑提示#建立編輯提示
參數及使用方法
{{#invoke:Namespace/ForEach|main |template=<nowiki> * {{{nsid}}}:{{{ns}}}({{NSPN|2={{{nsid}}}}})</nowiki> |cond=<nowiki>{{#expr:{{{nsid}}}>=0}}</nowiki> |delnowiki=true |delmingw=true }}
- -2:{{{ns}}}({{NSPN|2=-2}})
- -1:{{{ns}}}({{NSPN|2=-1}})
- 0:{{{ns}}}({{NSPN|2=0}})
- 1:{{{ns}}}({{NSPN|2=1}})
- 2:{{{ns}}}({{NSPN|2=2}})
- 3:{{{ns}}}({{NSPN|2=3}})
- 4:{{{ns}}}({{NSPN|2=4}})
- 5:{{{ns}}}({{NSPN|2=5}})
- 6:{{{ns}}}({{NSPN|2=6}})
- 7:{{{ns}}}({{NSPN|2=7}})
- 8:{{{ns}}}({{NSPN|2=8}})
- 9:{{{ns}}}({{NSPN|2=9}})
- 10:{{{ns}}}({{NSPN|2=10}})
- 11:{{{ns}}}({{NSPN|2=11}})
- 12:{{{ns}}}({{NSPN|2=12}})
- 13:{{{ns}}}({{NSPN|2=13}})
- 14:{{{ns}}}({{NSPN|2=14}})
- 15:{{{ns}}}({{NSPN|2=15}})
- 100:{{{ns}}}({{NSPN|2=100}})
- 101:{{{ns}}}({{NSPN|2=101}})
- 102:{{{ns}}}({{NSPN|2=102}})
- 103:{{{ns}}}({{NSPN|2=103}})
- 118:{{{ns}}}({{NSPN|2=118}})
- 119:{{{ns}}}({{NSPN|2=119}})
- 126:{{{ns}}}({{NSPN|2=126}})
- 127:{{{ns}}}({{NSPN|2=127}})
- 710:{{{ns}}}({{NSPN|2=710}})
- 711:{{{ns}}}({{NSPN|2=711}})
- 828:{{{ns}}}({{NSPN|2=828}})
- 829:{{{ns}}}({{NSPN|2=829}})
- 2600:{{{ns}}}({{NSPN|2=2600}})
- template支援參數列表:
nsid
:命名空間IDns
:命名空間名稱(相當於{{ns:{{{nsid}}}}}
)
- cond支援參數列表:
nsid
:命名空間ID
local p = {}
local getArgs = require('Module:Arguments').getArgs
local mError = require('Module:Error')
local mTemplateParameters = require('Module:TemplateParameters')
local yesno = require('Module:Yesno')
local lan = require('Module:Namespace')._lan
local data = mw.loadData('Module:Namespace/data')
local function formatStringWrap(str, args, forcePreprocess)
if not mw.ustring.match(str, '{') then
return str
end
local result = mTemplateParameters._getFormatingStringByArgument(str, args)
if mw.ustring.match(result, '{') and forcePreprocess then
result = mw.getCurrentFrame():preprocess(result)
end
return result
end
local function tryInvoke(expr, args, forcePreprocess)
if type(expr) == type(tryInvoke) then
return expr(args, forcePreprocess)
end
return formatStringWrap(tostring(expr), args, forcePreprocess)
end
function p._format(template, skip, reverse)
skip = skip or 'false'
reverse = reverse or false
local output = ''
local function forEach(nsid)
local name = lan(data.Namespace[tostring(nsid)])
local display = name
if data.Namespace[tostring(nsid) .. '-display'] then
display = lan(data.Namespace[tostring(nsid) .. '-display'])
end
if not yesno(tryInvoke(skip, {nsid = nsid}, true)) then
output = output .. tryInvoke(template, {nsid = nsid, name = name, display = display})
end
end
if reverse then
for index = #data.Namespace.list, 1, -1 do
forEach(data.Namespace.list[index])
end
else
for _, nsid in ipairs(data.Namespace.list) do
forEach(nsid)
end
end
return output
end
function p._main(args)
local template = args.template or args.format or args[1] or args['1']
local skip = args.skip or args[2] or args['2'] or 'false'
local delnowiki = yesno(args.delnowiki)
local delmsgnw = yesno(args.delmsgnw)
local reverse = yesno(args.reverse)
if not template or template == '' then
error('沒有提供渲染模板。')
end
if delnowiki then
template = mw.text.unstripNoWiki(template)
skip = mw.text.unstripNoWiki(skip)
end
if delmsgnw then
template = mw.text.decode(template)
skip = mw.text.unstripNoWiki(skip)
end
return p._format(template, skip, reverse)
end
function p.main(frame)
local args = getArgs(frame)
local status, result = pcall(p._main, args)
return status and result or mError.error{'[[Module:Namespace/ForEach]]錯誤:' .. result}
end
return p