Difference between revisions of "Module:Redirect-multi"
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 = | + | --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