Communauté  • Livre d'or
Chats noirs.jpg Actualités, astuces, interview... Venez lire la gazette de ce printemps de Vikidia ! DessinInterview.png
Cette page est protégée.

Module:Multiparamètres

Aller à la navigation Aller à la recherche
 Documentation[modifier] [purger]

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 :

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.


Source : cette page a été partiellement adaptée de la page Module:Multiparamètres de Wikipédia.
-- 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