<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.juanweixianshe.com/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ANamespace</id>
	<title>模块:Namespace - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.juanweixianshe.com/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ANamespace"/>
	<link rel="alternate" type="text/html" href="https://wiki.juanweixianshe.com/index.php?title=%E6%A8%A1%E5%9D%97:Namespace&amp;action=history"/>
	<updated>2026-04-11T15:22:29Z</updated>
	<subtitle>本wiki的该页面的版本历史</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.juanweixianshe.com/index.php?title=%E6%A8%A1%E5%9D%97:Namespace&amp;diff=108&amp;oldid=prev</id>
		<title>黯狐：导入1个版本</title>
		<link rel="alternate" type="text/html" href="https://wiki.juanweixianshe.com/index.php?title=%E6%A8%A1%E5%9D%97:Namespace&amp;diff=108&amp;oldid=prev"/>
		<updated>2021-08-04T08:54:12Z</updated>

		<summary type="html">&lt;p&gt;导入1个版本&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local data = mw.loadData('Module:Namespace/data')&lt;br /&gt;
local mLan = require('Module:Lan2')&lt;br /&gt;
&lt;br /&gt;
local function Error (msg)&lt;br /&gt;
	return mError.error{'[[Module:Namespace]]錯誤：' + msg}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ifempty (ret, val)&lt;br /&gt;
	return ret ~= '' and ret or val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._lan (args, lang)&lt;br /&gt;
	return mLan.main(args, ifempty(lang and lang:lower(), mw.getCurrentFrame():callParserFunction{ name = 'int', args = {'Lang'} }), {&lt;br /&gt;
		['def'] = {'en'}&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isNamespace (id)&lt;br /&gt;
	id = tostring(id)&lt;br /&gt;
	return &lt;br /&gt;
		mw.site.namespaces[tonumber(id) or id:lower()] and mw.site.namespaces[tonumber(id) or id:lower()].id&lt;br /&gt;
		or p._ispseudoNS(id)&lt;br /&gt;
		or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.namespace (frame)&lt;br /&gt;
	local args&lt;br /&gt;
	if frame == mw.getCurrentFrame() then&lt;br /&gt;
		-- We're being called via #invoke. The args are passed through to the module&lt;br /&gt;
		-- from the template page, so use the args that were passed into the template.&lt;br /&gt;
		if not getArgs then&lt;br /&gt;
			getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
		end&lt;br /&gt;
		args = getArgs(frame, {parentFirst=true})&lt;br /&gt;
	else&lt;br /&gt;
		-- We're being called from another module or from the debug console, so assume&lt;br /&gt;
		-- the args are passed in directly.&lt;br /&gt;
		args = frame&lt;br /&gt;
		if type(args) ~= type({}) then args = {frame} end&lt;br /&gt;
	end&lt;br /&gt;
	id = tostring(args.namespace or args[1])&lt;br /&gt;
	return (p._ispseudo() or mw.title.getCurrentTitle().namespace) == p.isNamespace(id) and (args['then'] or args[2]) or (args['else'] or args[3])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local MsgCallFunc = {&lt;br /&gt;
	['NamespacesDisplay'] = (function (nsid) &lt;br /&gt;
		return data.Namespace[tostring(nsid)]&lt;br /&gt;
	end),&lt;br /&gt;
	['NamespacesConversionDisplay'] = (function (nsid) &lt;br /&gt;
		return data.Namespace[tostring(nsid) .. '-display'] or data.Namespace[tostring(nsid)]&lt;br /&gt;
	end),&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for key, func in pairs(MsgCallFunc) do&lt;br /&gt;
	p['_' .. key] = function (lang, ns)&lt;br /&gt;
		if type(lang)  == 'table' then&lt;br /&gt;
			ns = lang[2]&lt;br /&gt;
			lang = lang[1]&lt;br /&gt;
		end&lt;br /&gt;
		local PNS&lt;br /&gt;
		local lang = lang&lt;br /&gt;
		local nsid&lt;br /&gt;
		if ns then&lt;br /&gt;
			if ns == '' then&lt;br /&gt;
				nsid = -3&lt;br /&gt;
			else&lt;br /&gt;
				local nsid_info = mw.site.namespaces[tonumber(ns)] or mw.site.namespaces[ns]&lt;br /&gt;
				if not nsid_info then&lt;br /&gt;
					PNS = p._ispseudo(ns)&lt;br /&gt;
					if PNS then&lt;br /&gt;
						if ns:match('^[Tt][Aa][Ll][Kk]:') then&lt;br /&gt;
							nsid = 'Talk:' .. PNS&lt;br /&gt;
						else&lt;br /&gt;
							nsid = PNS&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						nsid = -3&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					nsid = nsid_info.id&lt;br /&gt;
				end&lt;br /&gt;
			&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			PNS = p._ispseudo()&lt;br /&gt;
			if PNS then&lt;br /&gt;
				nsid = (mw.title.getCurrentTitle().namespace == 1 and 'Talk:' or '') .. PNS&lt;br /&gt;
			else&lt;br /&gt;
				nsid = mw.title.getCurrentTitle().namespace&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if type(nsid) == 'string' then&lt;br /&gt;
			return p._lan(data['PseudoNamespace'][nsid], lang)&lt;br /&gt;
		elseif nsid &amp;lt; -2 then&lt;br /&gt;
			error('Input namespace error.')&lt;br /&gt;
		end&lt;br /&gt;
		return p._lan(MsgCallFunc[key](nsid), lang)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	p[key] = function (frame) &lt;br /&gt;
		local args = require('Module:Arguments').getArgs(frame, {&lt;br /&gt;
			valueFunc = function (key, value)&lt;br /&gt;
				if key == 2 then&lt;br /&gt;
					return type(value) == 'string' and mw.text.trim(value) or value&lt;br /&gt;
				elseif value then&lt;br /&gt;
					value = mw.text.trim(value)&lt;br /&gt;
					if value ~= '' then&lt;br /&gt;
						return value&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
		local statue, wt = pcall(p['_' .. key], args)&lt;br /&gt;
		if statue then&lt;br /&gt;
			return wt&lt;br /&gt;
		end&lt;br /&gt;
		return tostring(mw.html.create('span'):attr('style', 'color:red;'):wikitext(&lt;br /&gt;
			p._lan ({&lt;br /&gt;
				['zh'] = 'Input namespace error',&lt;br /&gt;
				['zh-hans'] = '输入名字空间错误',&lt;br /&gt;
				['zh-hant'] = '輸入命名空間錯誤'&lt;br /&gt;
			}, lang)&lt;br /&gt;
		):done())&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function inArray (str, arr)&lt;br /&gt;
	for i, v in ipairs(arr) do&lt;br /&gt;
		if str == v then&lt;br /&gt;
			return v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._ispseudo (title)&lt;br /&gt;
	local success, titleObj = pcall(mw.title.new, title)&lt;br /&gt;
	if not success or not titleObj then&lt;br /&gt;
		if title == '' then&lt;br /&gt;
			return nil&lt;br /&gt;
		elseif not title then&lt;br /&gt;
			titleObj = mw.title.getCurrentTitle()&lt;br /&gt;
		elseif type(title) == 'table' and tostring(title) ~= 'table' then -- for arg title is mw.title obj&lt;br /&gt;
			local titleText = title.fullText&lt;br /&gt;
			if not titleText then&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
			success, titleObj = pcall(mw.title.new, title)&lt;br /&gt;
			if not success or not titleObj or titleObj ~= title then&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	title = titleObj.fullText:gsub('^Talk:', '')&lt;br /&gt;
	local split = mw.text.split(title, ':')&lt;br /&gt;
	if inArray(split[1], data['PseudoNamespace']['list']) then&lt;br /&gt;
		return split[1]&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.ispseudo (frame)&lt;br /&gt;
	local arg = require('Module:Arguments').getArgs(frame)['1']&lt;br /&gt;
	return p._ispseudo(arg) or ''&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._ispseudoNS (ns)&lt;br /&gt;
	if not ns or ns == '' then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local success, titleObj = pcall(mw.title.new, ns .. ':$1')&lt;br /&gt;
	if not success or not titleObj then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	ns = titleObj.fullText:gsub('^Talk:', ''):gsub(':%$1$', '')&lt;br /&gt;
	if inArray(ns, data['PseudoNamespace']['list']) then&lt;br /&gt;
		return ns&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p._PNSArray = data['PseudoNamespace']['list']&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>黯狐</name></author>
	</entry>
</feed>