Difference between revisions of "Module:Redirect-multi"

From blackwiki
Jump to navigation Jump to search
test>Nihiltres
(Something experimental to better handle edge cases…)
 
test>Nihiltres
(If only getArgs were friendlier…)
Line 5: Line 5:
 
function p.redirectMulti (frame)
 
function p.redirectMulti (frame)
 
local args = mArguments.getArgs(frame)
 
local args = mArguments.getArgs(frame)
local numRedirects = tonumber(table.remove(args, 1)) or 1
+
--Get maxArg manually because getArgs and table.maxn aren't friends
 +
local maxArg = 0
 +
for k, v in pairs(args) do
 +
if type(k) == 'number' and k > maxArg then maxArg = k end
 +
end
 +
--Get number of redirects then remove it from the args table
 +
local numRedirects = args[1] or 1
 +
--Manual downshift of arguments; not using table.remove because getArgs is
 +
--gnarly and it's not a sequence anyway
 +
for i = 2, maxArg do args[i - 1] = args[i] end
 
local options = {selfref = args.selfref}
 
local options = {selfref = args.selfref}
 
return mRedirectHatnote._redirect(args, numRedirects, options)
 
return mRedirectHatnote._redirect(args, numRedirects, options)

Revision as of 20:32, 12 May 2016


Implements {{redirect-multi}}.


local mRedirectHatnote = require('Module:Redirect hatnote')
local mArguments = require('Module:Arguments')
local p = {}

function p.redirectMulti (frame)
	local args = mArguments.getArgs(frame)
	--Get maxArg manually because getArgs and table.maxn aren't friends
	local maxArg = 0
	for k, v in pairs(args) do
		if type(k) == 'number' and k > maxArg then maxArg = k end
	end
	--Get number of redirects then remove it from the args table
	local numRedirects = args[1] or 1
	--Manual downshift of arguments; not using table.remove because getArgs is
	--gnarly and it's not a sequence anyway
	for i = 2, maxArg do args[i - 1] = args[i] end
	local options = {selfref = args.selfref}
	return mRedirectHatnote._redirect(args, numRedirects, options)
end

return p