« Module:Multiparamètres » : différence entre les versions

w>Od1n
(retrait du paramètre de mise en forme en italique (202581100), parce que j'ai ensuite trouvé une meilleure solution (202581410) : la possibilité de passer directement un lien (désactivant ainsi la transformation du paramètre en lien), avec la mise en forme souhaitée ; à noter que ce n'est pas encore implémenté dans les modèles)
 
m (1 version importée)
 
(Aucune différence)

Dernière version du 5 juillet 2023 à 10:44

La documentation pour ce module peut être créée à Module:Multiparamètres/doc

Erreur de script : Erreur Lua : erreur interne : l’interpréteur s’est arrêté avec le signal « -129 ».

-- 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.brut( frame )
    return p._main( frame, function ( item )
        return item
    end )
end

function p.lien( frame )
    return p._main( frame, function ( item )
        return '[[' .. ( ( item:sub( 1, 1 ) == ':' ) and item or ':' .. item ) .. ']]'
    end )
end

function p.lienAutomatique( frame )
    return p._main( frame, function ( item )
        if item:find( '[', nil, true ) then
            return item
        else
            return '[[' .. ( ( item:sub( 1, 1 ) == ':' ) and item or ':' .. item ) .. ']]'
        end
    end )
end

function p.categorie( frame )
    return p._main( frame, function ( item )
        return '[[:Catégorie:' .. item .. '|' .. item .. ']]'
    end )
end

function p.utilisateur( frame )
    return p._main( frame, function ( item )
        return '[[Utilisateur:' .. item .. '|' .. item .. ']]'
    end )
end

function p._main( frame, formatter )
    local args = frame:getParent().args

    local gras = ( args.gras and args.gras ~= '' )
    local items = {}

    for i, v in ipairs( args ) do
        local item = trim( v )
        if item ~= '' then
            item = formatter( item )
            if gras then
                item = '<b>' .. item .. '</b>'
            end
            items[ #items + 1 ] = item
        end
    end

    local dernierSeparateur = args.et and ( ' ' .. args.et .. ' ' )

    -- le paramètre "et" peut être défini à vide, exemple : [[Modèle:Module biblio/responsabilité principale]]
    if args.et == '' then
        dernierSeparateur = ' '
    end

    return mw.text.listToText( items, ', ', dernierSeparateur )
end

return p