Communauté • Livre d'or
Actualités, astuces, interview... Venez lire la gazette de ce printemps de Vikidia !
Actualités, astuces, interview... Venez lire la gazette de ce printemps de Vikidia !
Module:Multiparamètres
Aller à la navigation
Aller à la recherche
Source : cette page a été partiellement adaptée de la page Module:Multiparamètres de Wikipédia.
Le module : Multiparamètres sert à créer des listes d’éléments d’après un appel de module.
Fonctions
Fonctions fournies par ce module :
lien()
— utilisé par le module : Bandeau petit pour les modèles {{Article à lire}}, {{Article à créer}} et {{Pour en savoir plus}} ; et par le module : Voir principal pour le modèle homonyme ;contribs()
etMulti_travaux()
— utilisé par le modèle {{Multi travaux}}.
D’autres fonctions sont pour le moment commentées.
Fonctionnement
Chaque fonction dont le nom commence par une minuscule est destinée à être appelée par d’autres module. Chacuneprend trois arguments :
- une liste d’arguments venant d’un appel de module ;
- un booléen qui indique si les éléments doivent être en gras ;
- le texte qui sert de dernier séparateur (par défaut, « et »).
Chacune renvoit deux valeurs :
- le nombre d’éléments trouvés ;
- un texte contenant la liste d’éléments.
Les fonctions capitalisées sont destinées à être appelées par des modèles, et renvoient un texte.
La documentation de ce module est incluse depuis sa sous-page de documentation (modifier | historique).
Veuillez placer les catégories dans la sous-page /Documentation.
Les éditeurs peuvent travailler dans le bac à sable (créer).
-- 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( args, bold, last )
-- return p._main( args, bold, last,
-- function ( item ) return item end )
-- end
function p.lien( args, bold, last )
return p._main( args, bold, last,
function ( item ) return '[[' .. ( ( item:sub( 1, 1 ) == ':' ) and item or ':' .. item ) .. ']]' end )
end
-- function p.categorie( args, bold, last )
-- return p._main( args, bold, last,
-- function ( item ) return '[[:Catégorie:' .. item .. '|' .. item .. ']]' end )
-- end
-- function p.utilisateur( args, bold, last )
-- return p._main( args, bold, last,
-- function ( item ) return '[[Utilisateur:' .. item .. '|' .. item .. ']]' end )
-- end
function p.contribs( args, bold, last )
return p._main( args, bold, last,
function ( item ) return '[[Spécial:Contributions/' .. item .. '|' .. item .. ']]' end )
end
function p.Multi_travaux( frame )
local args = { frame.args[1], frame.args[2], frame.args[3], frame.args[4], frame.args[5] }
local nombre, phrase = p.contribs( args, frame.args['gras'], frame.args['et'] )
assert( nombre ~= 0, 'Au moins un nom d’utilisateur doit être précisé !' )
if nombre == 1 then
return '’utilisateur ' .. phrase
else
return 'es utilisateurs ' .. phrase
end
end
function p._main( args, bold, last, func )
local items = {}
for i, v in ipairs( args ) do
local item = trim( v )
if item ~= '' then
item = func( item )
if bold then
item = "'''" .. item .. "'''"
end
items[ #items + 1 ] = item
end
end
local lastSep
if not last then -- raccourci
lastSep = ' et '
elseif last == ',' or last == ', ' then -- virgule
lastSep = ', '
elseif last == '' or last == ' ' then -- espace
lastSep = ' '
else -- personnalisé
lastSep = ' ' .. trim( last ) .. ' '
end
return #items, mw.text.listToText( items, ', ', lastSep )
end
return p