Module:Multiparamètres

    De WikiPasokh

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

    local mwTrim = mw.text.trim
    
    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 = mwTrim( 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