模組:Namespace
外观
local p = {}
local function lan (args, lang)
-- from [[Module:Lan]]
local userlanguage = lang or mw.getCurrentFrame():callParserFunction{ name = 'int', args = {'Conversionname'} }
local fallbackList = require('Module:Lan').fallbackList
local fallback = fallbackList[userlanguage]
if fallback == nil then
fallback = fallbackList['zh']
end
for _,langArgName in ipairs(fallback) do
if args[langArgName] ~= nil then
return args[langArgName]
end
end
return ''
end
local function ifempty (ret, val)
return ret ~= '' and ret or val
end
function p._main (args)
local lang = args[1]:lower() or mw.getCurrentFrame():callParserFunction{ name = 'int', args = {'Conversionname'} }
local arg = args[2]
local nsid
local isTalk = false
if arg then
if arg == '' then
nsid = -3
else
local nsid_info = mw.site.namespaces[tonumber(arg)] or mw.site.namespaces[arg]
if not nsid_info then
nsid = -3
else
nsid = nsid_info.id
end
end
else
nsid = mw.title.getCurrentTitle().namespace
end
if nsid < -2 then
return tostring(mw.html.create('span'):attr('style', 'color:red;'):wikitext(
lan ({
['zh'] = 'Input namespace error',
['zh-hans'] = '输入名字空间错误',
['zh-hant'] = '輸入命名空間錯誤'
}, lang)
):done())
elseif mw.site.talkNamespaces[nsid] then
nsid = nsid - 1
isTalk = true
end
return
mw.message.new('nstab-' .. ifempty(mw.site.namespace[nsid].canonicalName:lower(), 'main')):inLanguage(lang):plain() ..
(isTalk and mw.message.new('talk'):inLanguage(lang):plain() or '')
end
function p.main (frame)
local args = require('Module:Arguments').getArgs(frame, {
valueFunc = function (key, value)
if key == 2 then
return type(value) == 'string' and mw.text.trim(value) or value
elseif value then
value = mw.text.trim(value)
if value ~= '' then
return value
end
end
return nil
end
})
return p._main(args)
end
return p