跳转到内容
打开/关闭搜索
搜索
打开/关闭菜单
389
文件
1
用户
6086
编辑
Gal中文百科
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
在其他项目中
打开/关闭外观设置菜单
无法加载偏好设置。请检查您的网络连接并重试。
重试
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
讨论
贡献
创建账号
登录
编辑“︁
Module
:
Namespace
”︁
来自Gal中文百科
查看
阅读
编辑源代码
查看历史
associated-pages
模块
讨论
更多操作
更多
工具
链入页面
相关更改
页面信息
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
local p = {} local data = mw.loadData('Module:Namespace/data') local mLan = require('Module:Lan2') local function Error(msg) return mError.error { '[[Module:Namespace]]错误:' .. msg } end local function ifempty(ret, val) return ret ~= '' and ret or val end local function inArray(str, arr) for i, v in ipairs(arr) do if str == v then return v end end return nil end function p._lan(args, lang) return mLan.main(args, ifempty(lang and lang:lower(), mw.getCurrentFrame():callParserFunction { name = 'int', args = { 'Lang' } }), { ['def'] = { 'en' } }) end function p._isNamespace(id) id = tostring(id) local PNS, _PNSIsTalk = p._isPseudoNamespace(id) return PNS or mw.site.namespaces[tonumber(id) or id:lower()] and mw.site.namespaces[tonumber(id) or id:lower()].id or nil end function p.namespace(frame) local args if frame == mw.getCurrentFrame() then -- We're being called via #invoke. The args are passed through to the module -- from the template page, so use the args that were passed into the template. if not getArgs then getArgs = require('Module:Arguments').getArgs end args = getArgs(frame, { parentFirst = true }) else -- We're being called from another module or from the debug console, so assume -- the args are passed in directly. args = frame if type(args) ~= type({}) then args = { frame } end end id = tostring(args.namespace or args[1]) local PNS, _PNSIsTalk = p._isPseudoNamespace() return (PNS or mw.title.getCurrentTitle().namespace) == p._isNamespace(id) and (args['then'] or args[2]) or (args['else'] or args[3]) end local MsgCallFunc = { ['NamespacesDisplay'] = (function(nsid) return data.Namespace[tostring(nsid)] end), ['NamespacesConversionDisplay'] = (function(nsid) return data.Namespace[tostring(nsid) .. '-display'] or data.Namespace[tostring(nsid)] end), } function p._PseudoNamespaceDisplay(lang, ns, isTalk) if not inArray(ns, data['PseudoNamespace']['list']) then error('Input pseudo namespace error.') end local display = p._lan(data.PseudoNamespace.messages[isTalk and 'talk' or 'main'], lang) display = mw.ustring.gsub(display, '$1', p._lan(data.PseudoNamespace[ns], lang)) return display end for key, func in pairs(MsgCallFunc) do p['_' .. key] = function(lang, ns) if type(lang) == 'table' then ns = lang[2] lang = lang[1] end local PNS, PNSIsTalk local lang = lang local nsid if ns then if ns == '' then nsid = -3 else local nsid_info = mw.site.namespaces[tonumber(ns)] or mw.site.namespaces[ns] if not nsid_info then PNS, PNSIsTalk = p._isPseudoNamespace(ns, false) nsid = -3 else nsid = nsid_info.id end end else local title = mw.title.getCurrentTitle() nsid = title.namespace if nsid == 0 or nsid == 1 then PNS, PNSIsTalk = p._isPseudoNamespace(title, true) end end if PNS then return p._pseudoNamespaceDisplay(lang, PNS, PNSIsTalk) elseif nsid < -2 then error('Input namespace error.') end return p._lan(MsgCallFunc[key](nsid), lang) end p[key] = function(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 }) local statue, wt = pcall(p['_' .. key], args) if statue then return wt end return tostring(mw.html.create('span'):attr('style', 'color:red;'):wikitext( p._lan({ ['en'] = 'Input namespace error', ['zh-hans'] = '输入命名空间错误', ['zh-hant'] = '输入命名空间错误' }, lang) ):done()) end end function p._isPseudoNamespace(ns, isPage) if not ns then ns = mw.title.getCurrentTitle() isPage = true elseif ns == '' then return nil, false end local success, titleObj if type(ns) == type('') then if not ns:match(':') then ns = ns .. ':' end success, titleObj = pcall(mw.title.new, ns) if not success or not titleObj or not titleObj:inNamespaces(0, 1) then return nil, false end local split = mw.text.split(titleObj.text, ':') if not isPage and (#split > 2 or (split[2] ~= '' and split[2] ~= nil)) then -- isPage = false 时仅允许: -- 1. PNS -- 2. PNS: return nil, false end ns = split[1] -- 移除冒号后的东西 elseif type(ns) == type({}) and type(ns.text) == type('') and isPage then -- 如果传入页面物件,则 isPage 必然要是 true if not ns:inNamespaces(0, 1) then return nil, false end ns = mw.text.split(ns.text, ':')[1] -- 移除冒号后的东西 else error(string.format( 'bad argument #1 to \'_isPseudoNamespace[isPage=%s]\' (%s expected, got %s)', isPage and 'true' or 'false', isPage and 'string or mw.title object' or 'string', type(ns) )) end if inArray(ns, data['PseudoNamespace']['list']) then return ns, titleObj.namespace == 1 end return nil, false end function p.ispseudo(frame) local arg = require('Module:Arguments').getArgs(frame)['1'] local PNS, _isTalk = p._isPseudoNamespace(arg, true) return PNS or '' end p._PNSArray = data['PseudoNamespace']['list'] return p
摘要:
请注意,所有对Gal中文百科的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Gal中文百科:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
此页面嵌入的页面:
Module:Namespace/doc
(
编辑
)
编辑“︁
Module
:
Namespace
”︁
来自Gal中文百科