Difference between revisions of "Module:Redirect-multi"
Jump to navigation
Jump to search
test>Nihiltres m (Tweaked downshift code) |
test>Nihiltres (Added fancy defaulting) |
||
| Line 1: | Line 1: | ||
local mRedirectHatnote = require('Module:Redirect hatnote') | local mRedirectHatnote = require('Module:Redirect hatnote') | ||
local mArguments = require('Module:Arguments') | local mArguments = require('Module:Arguments') | ||
| + | local mHatnote = require('Module:Hatnote') | ||
local p = {} | local p = {} | ||
| Line 15: | Line 16: | ||
--gnarly and it's not a sequence anyway | --gnarly and it's not a sequence anyway | ||
for i = 2, maxArg + 1 do args[i - 1] = args[i] end | for i = 2, maxArg + 1 do args[i - 1] = args[i] end | ||
| + | --if no arguments past redirects exist, add in a default set | ||
| + | if maxArg - 1 == numRedirects then -- "<=" would error out regardless | ||
| + | for i = 1, numRedirects do | ||
| + | args[numRedirects + (2 * i)] = args[i] and mHatnote.disambiguate(args[i]) | ||
| + | --this does add in an "and" after the last item, but it's ignored | ||
| + | args[numRedirects + (2 * i) + 1] = 'and' | ||
| + | end | ||
| + | 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 15:27, 23 June 2016
Implements {{redirect-multi}}.
local mRedirectHatnote = require('Module:Redirect hatnote')
local mArguments = require('Module:Arguments')
local mHatnote = require('Module:Hatnote')
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 = tonumber(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 + 1 do args[i - 1] = args[i] end
--if no arguments past redirects exist, add in a default set
if maxArg - 1 == numRedirects then -- "<=" would error out regardless
for i = 1, numRedirects do
args[numRedirects + (2 * i)] = args[i] and mHatnote.disambiguate(args[i])
--this does add in an "and" after the last item, but it's ignored
args[numRedirects + (2 * i) + 1] = 'and'
end
end
local options = {selfref = args.selfref}
return mRedirectHatnote._redirect(args, numRedirects, options)
end
return p