Module:Reply to and Module:Reply to/sandbox: Difference between pages
Appearance
(Difference between pages)
Content deleted Content added
cleanup code |
rearrange |
||
Line 4: | Line 4: | ||
msg ='Error in [[Template:Reply to]]: ' .. msg |
msg ='Error in [[Template:Reply to]]: ' .. msg |
||
return mw.text.tag('strong', {['class']='error'}, msg) |
return mw.text.tag('strong', {['class']='error'}, msg) |
||
⚫ | |||
local function makeLink(u, l) |
|||
return '[[User:' .. u .. '|' .. (l or u) .. ']]' |
|||
end |
end |
||
function p.replyto(frame) |
function p.replyto(frame) |
||
local outArray, argIndex = {}, {} |
|||
local origArgs = frame:getParent().args |
|||
local args = |
local args = frame:getParent().args |
||
⚫ | |||
local maxArg = 1 |
|||
local usernames = 0 |
|||
for k, v in pairs( |
for k, v in pairs(args) do |
||
if type(k) == 'number' then |
if type(k) == 'number' and string.match(v,'%S') then |
||
table.insert(argIndex, k) |
|||
if mw.ustring.match(v,'%S') then |
|||
if k > maxArg then maxArg = k end |
|||
usernames = usernames + 1 |
|||
⚫ | |||
⚫ | |||
⚫ | |||
end |
|||
elseif v == '' and k:sub(0,5) == 'label' then |
|||
args[k] = '​' |
|||
⚫ | |||
args[k] = v |
|||
end |
end |
||
⚫ | |||
table.sort(argIndex) |
|||
for _, k in ipairs(argIndex) do |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
if label == '' then label = '​' end |
|||
table.insert( outArray, makeLink(title, label) ) |
|||
end |
end |
||
if |
if #outArray > (tonumber(frame.args.max) or 50) then |
||
return makeError( |
return makeError('More than ' .. tostring(frame.args.max or 50) .. ' names specified.') |
||
⚫ | |||
'More than %s names specified.', |
|||
⚫ | |||
tostring(frame.args.max or 50) |
|||
⚫ | |||
)) |
|||
outArray[1] = makeLink(frame.args.example) |
|||
else |
|||
⚫ | |||
⚫ | |||
return makeError('Username not given.') |
|||
end |
end |
||
⚫ | |||
local isfirst = true |
|||
local outStr = args['prefix'] or '@' |
|||
for i = 1, maxArg do |
|||
⚫ | |||
if isfirst then |
|||
isfirst = false |
|||
else |
|||
if ( (usernames > 2) or ((usernames == 2) and (args['c'] == '')) ) then outStr = outStr..', ' end |
|||
if i == maxArg then outStr = outStr..' '..(args['c'] or 'and') .. ' ' end |
|||
end |
|||
outStr = string.format( |
|||
'%s[[User:%s|%s]]', |
|||
outStr, |
|||
args[i], |
|||
⚫ | |||
) |
|||
⚫ | |||
⚫ | |||
outStr = outStr..(args['p'] or ':') |
|||
⚫ | |||
end |
end |
||
local conjuction = (#outArray == 2 and ' ' or ', ') .. (args.c or 'and') .. ' ' |
|||
local outStr = (args.c == '') and table.concat(outArray, ', ') or mw.text.listToText(outArray, ', ', conjuction) |
|||
⚫ | |||
end |
end |
||