模块:Redirect Template List

local RTL = {}
local yesno = require('Module:Yesno')
local mError = require('Module:Error')
local mNS = require('Module:Namespace')

RTL.namespaceTemplate = {
	[0] = mNS._ispseudo() and '捷徑重定向' or nil,-- PNS
	[1] = mNS._ispseudo() and '捷徑重定向' or nil,-- PNS
	[10] = '模板重定向',--Template
	[14] = '分類捷徑重定向'--Category
}

function main (args, frame)
	local templatelist = {}
	local i = 1
	local ns = mw.title.getCurrentTitle().namespace
	local nstemplate = 0
    while true do
        id = args[i]
        if (id ~= nil) then
            if id ~= '' then
            	if string.gsub(args[i], '重定向', '') .. '重定向' == RTL.namespaceTemplate[ns] then
                    nstemplate = 1
                end
                table.insert(templatelist, '{{' .. string.gsub(args[i], '重定向', '') .. '重定向' .. (args['arg' .. i .. '_arg'] or '') .. '}}' )
            end
            i = i + 1
        else
            break
        end
    end
	if ((RTL.namespaceTemplate[ns] ~= nil) and (ns ~= 14) and (nstemplate == 0)) then
		table.insert(templatelist, '{{' .. RTL.namespaceTemplate[ns] .. '}}' )
	elseif ((RTL.namespaceTemplate[ns] ~= nil) and ((ns == 14) and ((args['重定向到'] ~= nil) or (args['重新導向到'] ~= nil) or (args['RTC'] ~= nil))) and (nstemplate == 0)) then
		table.insert(templatelist, '{{' .. RTL.namespaceTemplate[ns] .. '|' ..  (args['重定向到'] or args['重新導向到'] or args['RTC']) .. '}}' )
	end
	if mw.isSubsting() then
		return frame:preprocess('{{Redirect_category_shell|\n' .. mw.text.listToText(templatelist,'\n','\n') .. '\n}}')
	else
		return frame:preprocess(require('Module:Redirect_category_shell')._main(mw.text.listToText(templatelist,'\n','\n'), '<small>适当时会自动检测、描述与分类[[Wikipedia:保護方針|保护级别]]及-{zh-hans:名字空间;zh-hant:命名空間;}-使用模板。</small>'))
	end
end

function RTL.main(frame)
	local args = {}
	for k, v in pairs( frame:getParent().args ) do
		args[k] = v
	end
    return main(args, frame)
end

function RTL.RTLarg(frame)
	local arg = ''
    for k, v in pairs( frame:getParent().args ) do
    	arg = arg .. '|' .. k .. '=' .. mw.text.trim(v)
	end
	return arg
end

return RTL