Aller au contenu

Module:Notification

Cette page est protégée.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 23 novembre 2022 à 15:14 et modifiée en dernier par Od1n (discuter | contributions) (je viens de tester, plus performant de faire plusieurs find() en plaintext qu'un seul en regex). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[voir] [modifier] [historique] [purger]

Module utilisé par {{Mention}}, {{Notif}}, {{Notif discret}} et {{Notif invisible}}, ainsi que {{Bonjour}}, {{Bonsoir}}, {{Salut}}, {{Merci}}etc.

-- 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
                    item = '<span class="nowrap">' .. intro .. item .. '</span>'
                elseif texte:find( ' ', nil, true ) or texte:find( '-', nil, true ) then
                    item = '<span class="nowrap">' .. item .. '</span>'
                end
                items[ #items + 1 ] = item
            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