Saltar para o conteúdo

Módulo:Responder a

Permanently protected module
Origem: Wikipédia, a enciclopédia livre.

local p = {}

local function makeError(msg)
    msg ='Erro em [[Predefinição:Responder a]]: ' .. msg
    return mw.text.tag('strong', {['class']='error'}, msg)
end

function p.replyto(frame)
    local origArgs = frame:getParent().args
    local args = {}
    local maxArg = 1
    local usernames = 0
    for k, v in pairs(origArgs) do
        if type(k) == 'number' then
            if mw.ustring.match(v,'%S') then
                if k > maxArg then maxArg = k end
                usernames = usernames + 1
                local title = mw.title.new(v)
                if not title then return makeError('Dados de entrada contêm carateres proibidos.') end
                	
                args[k] = title.rootText
            end
        elseif v == '' and k:sub(0,5) == 'label' then
            args[k] = '​'
        else
            args[k] = v
        end
    end

    if usernames > (tonumber(frame.args.max) or 50) then
        return makeError(string.format(
            'Mais de %s nomes especificados.',
            tostring(frame.args.max or 50)
        ))
    else
        if usernames < 1 then
            if frame.args.exemplo then args[1] = frame.args.exemplo
            elseif frame.args.example then args[1] = frame.args.example
            else return makeError('Nome de usuário(a) não fornecido.')
            end
       end
        args['label1'] = args['label1'] or args['label']
        args['prefix'] = args['prefix'] or args['prefixo']
        local isfirst = true
        local outStr = args['prefix'] or '@'
        for i = 1, maxArg do
            if args[i] and (((i == 1 or i == 2) or args['c'] == '') or i ~= maxArg)  then
                if isfirst then
                    isfirst = false
                else
                    if usernames >= 2 and (args['c'] == '' or i ~= maxArg) then outStr = outStr..', ' end
                end
                if 1 == maxArg or i ~= maxArg  then outStr = string.format(
                    '%s[[Usuário(a):%s|%s]]',
                    outStr,
                    args[i],
                    args['label'..tostring(i)] or args[i]
                ) end
            end
            if args[i] and (i == maxArg and i ~= 1) then
				outStr = outStr.. ' '..(args['c'] or 'e')..string.format(' [[Usuário(a):%s|%s]]', args[i], args['label'..tostring(i)] or args[i])
            end
        end
        outStr = outStr..(args['p'] or ':')
        return mw.text.tag('span', {['class']='template-ping'}, outStr)
    end
end

return p