local p =
local separators =
local function getSeparator(sep) if type(sep) ~= 'string' then return nil end if separators[sep] then return mw.message.new(sep .. '-separator'):plain else return sep endend
local function generateLink(page, nspace, delim, endDelim) if not page then return nil end local pagename = mw.title.new(page) if not pagename then -- Default to the args we were passed if our page -- object was nil. pagename = page else pagename = pagename.text end delim = delim or endDelim = endDelim or delim nspace = nspace or if nspace
function p._main(args) local t = local separator = getSeparator(args.separator) local conjunction = getSeparator(args.conjunction) for i, v in ipairs(args) do table.insert(t, generateLink(v, args.nspace, args.delim, args.edelim )) end return mw.text.listToText(t, separator, conjunction)end
function p.main(frame) local origArgs = require('Module:Arguments').getArgs(frame,)
-- Process integer args. Allow for explicit positional arguments that are -- specified out of order, e.g. . -- After processing, the args can be accessed accurately from ipairs. local args = for k, v in pairs(origArgs) do if type(k)
k and string.match(v, '%S') then -- Remove blank or whitespace values. table.insert(args, k) end end table.sort(args) for i, v in ipairs(args) do args[i] = origArgs[v] -- Trim whitespace. if type(args[i])
-- Get old named args. We don't need to remove blank values -- as for the nspace and edelim parameters the behaviour is different -- depending on whether the parameters are blank or absent, and for -- the delim parameter the default should be the blank string anyway. args.delim = origArgs.delim args.edelim = origArgs.edelim args.nspace = origArgs.nspace
-- Get new named args, "separator" and "conjunction", and strip blank values. if origArgs.separator and origArgs.separator ~= then args.separator = origArgs.separator end if origArgs.conjunction and origArgs.conjunction ~= then args.conjunction = origArgs.conjunction end
return p._main(args)end
return p