<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hant-TW">
	<id>https://chunghwamc.com/wiki/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E7%B5%84%3ANamespace</id>
	<title>模組:Namespace - 修訂紀錄</title>
	<link rel="self" type="application/atom+xml" href="https://chunghwamc.com/wiki/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E7%B5%84%3ANamespace"/>
	<link rel="alternate" type="text/html" href="https://chunghwamc.com/wiki/index.php?title=%E6%A8%A1%E7%B5%84:Namespace&amp;action=history"/>
	<updated>2026-04-05T21:18:32Z</updated>
	<subtitle>本 wiki 上此頁面的修訂紀錄</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://chunghwamc.com/wiki/index.php?title=%E6%A8%A1%E7%B5%84:Namespace&amp;diff=364&amp;oldid=prev</id>
		<title>Chunghwamc：​建立內容為「local p = {} local data = mw.loadData(&#039;Module:Namespace/data&#039;) local mLan = require(&#039;Module:Lan2&#039;)  local function Error (msg) 	return mError.error{&#039;Module:Namespace錯誤：&#039; + msg} end  local function ifempty (ret, val) 	return ret ~= &#039;&#039; and ret or val end  function p._lan (args, lang) 	return mLan.main(args, ifempty(lang and lang:lower(), mw.getCurrentFrame():callParserFunction{ name = &#039;int&#039;, args = {&#039;Lang&#039;} }), { 		[&#039;def&#039;] = {&#039;en&#039;} 	}) end  function…」的新頁面</title>
		<link rel="alternate" type="text/html" href="https://chunghwamc.com/wiki/index.php?title=%E6%A8%A1%E7%B5%84:Namespace&amp;diff=364&amp;oldid=prev"/>
		<updated>2024-04-28T07:28:44Z</updated>

		<summary type="html">&lt;p&gt;建立內容為「local p = {} local data = mw.loadData(&amp;#039;Module:Namespace/data&amp;#039;) local mLan = require(&amp;#039;Module:Lan2&amp;#039;)  local function Error (msg) 	return mError.error{&amp;#039;&lt;a href=&quot;/wiki/%E6%A8%A1%E7%B5%84:Namespace&quot; title=&quot;模組:Namespace&quot;&gt;Module:Namespace&lt;/a&gt;錯誤：&amp;#039; + msg} end  local function ifempty (ret, val) 	return ret ~= &amp;#039;&amp;#039; and ret or val end  function p._lan (args, lang) 	return mLan.main(args, ifempty(lang and lang:lower(), mw.getCurrentFrame():callParserFunction{ name = &amp;#039;int&amp;#039;, args = {&amp;#039;Lang&amp;#039;} }), { 		[&amp;#039;def&amp;#039;] = {&amp;#039;en&amp;#039;} 	}) end  function…」的新頁面&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(&amp;#039;Module:Namespace/data&amp;#039;)&lt;br /&gt;
local mLan = require(&amp;#039;Module:Lan2&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local function Error (msg)&lt;br /&gt;
	return mError.error{&amp;#039;[[Module:Namespace]]錯誤：&amp;#039; + msg}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ifempty (ret, val)&lt;br /&gt;
	return ret ~= &amp;#039;&amp;#039; 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 = &amp;#039;int&amp;#039;, args = {&amp;#039;Lang&amp;#039;} }), {&lt;br /&gt;
		[&amp;#039;def&amp;#039;] = {&amp;#039;en&amp;#039;}&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&amp;#039;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(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
		end&lt;br /&gt;
		args = getArgs(frame, {parentFirst=true})&lt;br /&gt;
	else&lt;br /&gt;
		-- We&amp;#039;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[&amp;#039;then&amp;#039;] or args[2]) or (args[&amp;#039;else&amp;#039;] or args[3])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local MsgCallFunc = {&lt;br /&gt;
	[&amp;#039;NamespacesDisplay&amp;#039;] = (function (nsid) &lt;br /&gt;
		return data.Namespace[tostring(nsid)]&lt;br /&gt;
	end),&lt;br /&gt;
	[&amp;#039;NamespacesConversionDisplay&amp;#039;] = (function (nsid) &lt;br /&gt;
		return data.Namespace[tostring(nsid) .. &amp;#039;-display&amp;#039;] 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[&amp;#039;_&amp;#039; .. key] = function (lang, ns)&lt;br /&gt;
		if type(lang)  == &amp;#039;table&amp;#039; 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 == &amp;#039;&amp;#039; 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(&amp;#039;^[Tt][Aa][Ll][Kk]:&amp;#039;) then&lt;br /&gt;
							nsid = &amp;#039;Talk:&amp;#039; .. 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 &amp;#039;Talk:&amp;#039; or &amp;#039;&amp;#039;) .. 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) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			return p._lan(data[&amp;#039;PseudoNamespace&amp;#039;][nsid], lang)&lt;br /&gt;
		elseif nsid &amp;lt; -2 then&lt;br /&gt;
			error(&amp;#039;Input namespace error.&amp;#039;)&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(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
			valueFunc = function (key, value)&lt;br /&gt;
				if key == 2 then&lt;br /&gt;
					return type(value) == &amp;#039;string&amp;#039; 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 ~= &amp;#039;&amp;#039; 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[&amp;#039;_&amp;#039; .. 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(&amp;#039;span&amp;#039;):attr(&amp;#039;style&amp;#039;, &amp;#039;color:red;&amp;#039;):wikitext(&lt;br /&gt;
			p._lan ({&lt;br /&gt;
				[&amp;#039;zh&amp;#039;] = &amp;#039;Input namespace error&amp;#039;,&lt;br /&gt;
				[&amp;#039;zh-hans&amp;#039;] = &amp;#039;输入名字空间错误&amp;#039;,&lt;br /&gt;
				[&amp;#039;zh-hant&amp;#039;] = &amp;#039;輸入命名空間錯誤&amp;#039;&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 == &amp;#039;&amp;#039; 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) == &amp;#039;table&amp;#039; and tostring(title) ~= &amp;#039;table&amp;#039; 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(&amp;#039;^Talk:&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	local split = mw.text.split(title, &amp;#039;:&amp;#039;)&lt;br /&gt;
	if inArray(split[1], data[&amp;#039;PseudoNamespace&amp;#039;][&amp;#039;list&amp;#039;]) 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(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame)[&amp;#039;1&amp;#039;]&lt;br /&gt;
	return p._ispseudo(arg) or &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._ispseudoNS (ns)&lt;br /&gt;
	if not ns or ns == &amp;#039;&amp;#039; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local success, titleObj = pcall(mw.title.new, ns .. &amp;#039;:$1&amp;#039;)&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(&amp;#039;^Talk:&amp;#039;, &amp;#039;&amp;#039;):gsub(&amp;#039;:%$1$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	if inArray(ns, data[&amp;#039;PseudoNamespace&amp;#039;][&amp;#039;list&amp;#039;]) 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[&amp;#039;PseudoNamespace&amp;#039;][&amp;#039;list&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Chunghwamc</name></author>
	</entry>
</feed>