Aller au contenu

Module:Notification

Une page de Wikiquote, le recueil des citations libres.

Module utilisé par {{Bonjour}}, {{Bonsoir}}, {{Merci}}.


-- http://lua-users.org/wiki/StringTrim
local function trim( s )
    return s:match( '^()%s*$' ) and '' or s:match( '^%s*(.*%S)' )
end

local p = {}

function p.main( frame )
    local parentArgs = frame:getParent().args

    local intro
    if frame.args.intro and frame.args.intro ~= '' then
        intro = frame.args.intro
    end

    -- utilisé par Modèle:Mention
    local prefixe = frame.args.prefixe or ''

    local indexMax = 50
    local depasseMax = false

    local items = {}

    for i, v in ipairs( parentArgs ) do
        if i <= indexMax then
            local username = trim( v )
            if username ~= '' then
                local texte = username
                if parentArgs[ 'texte' .. i ] and parentArgs[ 'texte' .. i ] ~= '' then
                    texte = parentArgs[ 'texte' .. i ]
                end
                local item = prefixe .. '[[Utilisateur:' .. username .. '|' .. texte .. ']]'
                if intro and #items == 0 then
                    items[ 1 ] = '<span class="nowrap">' .. intro .. item .. '</span>'
                else
                    if texte:find( ' ', nil, true ) or texte:find( '-', nil, true ) then
                        item = '<span class="nowrap">' .. item .. '</span>'
                    end
                    items[ #items + 1 ] = item
                end
            end
        else
            depasseMax = true
        end
    end

    if #items == 0 then
        return '<span class="error">vous devez spécifier au moins un utilisateur</span>'
    end

    local result = mw.text.listToText( items )

    if depasseMax then
        result = result .. '<span class="error">trop d\'utilisateurs : maximum ' .. indexMax .. '</span>'
    end

    return result
end

return p