<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.mechsploit.me/index.php?action=history&amp;feed=atom&amp;title=Module%3AArguments%2Fdoc%2Ffr</id>
	<title>Module:Arguments/doc/fr - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mechsploit.me/index.php?action=history&amp;feed=atom&amp;title=Module%3AArguments%2Fdoc%2Ffr"/>
	<link rel="alternate" type="text/html" href="https://wiki.mechsploit.me/index.php?title=Module:Arguments/doc/fr&amp;action=history"/>
	<updated>2026-04-08T13:11:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.mechsploit.me/index.php?title=Module:Arguments/doc/fr&amp;diff=208&amp;oldid=prev</id>
		<title>MechsploWikiSysop: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://wiki.mechsploit.me/index.php?title=Module:Arguments/doc/fr&amp;diff=208&amp;oldid=prev"/>
		<updated>2025-09-02T02:50:13Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:50, 1 September 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>MechsploWikiSysop</name></author>
	</entry>
	<entry>
		<id>https://wiki.mechsploit.me/index.php?title=Module:Arguments/doc/fr&amp;diff=207&amp;oldid=prev</id>
		<title>mw&gt;Wladek92: Created page with &quot;Ceci a été un problème avec les modules qui utilisent $1 pour détecter s&#039;il faut utiliser les arguments à partir du &#039;&#039;frame&#039;&#039; ou du &#039;&#039;frame parent&#039;&#039;, car ces modules traitent automatiquement chaque argument disponible.&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.mechsploit.me/index.php?title=Module:Arguments/doc/fr&amp;diff=207&amp;oldid=prev"/>
		<updated>2025-01-20T18:13:34Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Ceci a été un problème avec les modules qui utilisent $1 pour détecter s&amp;#039;il faut utiliser les arguments à partir du &amp;#039;&amp;#039;frame&amp;#039;&amp;#039; ou du &amp;#039;&amp;#039;frame parent&amp;#039;&amp;#039;, car ces modules traitent automatiquement chaque argument disponible.&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{SUBPAGENAME}}|doc||{{Documentation subpage}}}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/noinclude&amp;gt;{{#switch:&lt;br /&gt;
| =&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Languages|Module:Arguments/doc}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&amp;gt;&lt;br /&gt;
{{Shared Template Warning|Module:Arguments|Module:Arguments}}&lt;br /&gt;
{{Used in system}}&lt;br /&gt;
{{Module rating|release}}&lt;br /&gt;
{{Module rating|protected}}&lt;br /&gt;
&lt;br /&gt;
Ce module facilite le traitement des arguments reçus de {{Magic word|#invoke|...|ext=Scribunto|code=1|nowrap=1}}.&lt;br /&gt;
Il s&amp;#039;agit d&amp;#039;un méta-module, destiné à être utilisé par d&amp;#039;autres modules; il ne doit pas être appelé directement à partir de {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}.&lt;br /&gt;
Ses fonctionnalités comprennent :&lt;br /&gt;
&lt;br /&gt;
* la séparation facile des arguments et la suppression des arguments vides.&lt;br /&gt;
* les arguments peuvent venir à la fois de l&amp;#039;environnement (&amp;#039;&amp;#039;frame&amp;#039;&amp;#039;) courant et de l&amp;#039;environnement parent (informations plus détailées ci-dessous).&lt;br /&gt;
* vous pouvez passer les arguments directement à partir d&amp;#039;un autre module Lua ou de la console de débogage.&lt;br /&gt;
* les arguments sont récupérés selon les besoins, ce qui permet d&amp;#039;éviter (certains) problèmes avec les balises {{xtag|ref}}.&lt;br /&gt;
* la plupart des fonctionnalités peuvent être personnalisées.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Basic_use&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Utilisation de base ==&lt;br /&gt;
Vous devez d&amp;#039;abord charger le module.&lt;br /&gt;
Il contient une fonction nommée &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour un scénario élémentaire, vous pouvez utiliser &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt; dans votre fonction principale.&lt;br /&gt;
La variable &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; est une table contenant les arguments de {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
(voir les détails ci-dessous).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	-- Placer ici le code principal du module.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Néanmoins, il est recommandé d&amp;#039;utiliser une fonction juste pour traiter les arguments de {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}.&lt;br /&gt;
Cela signifie que si quelqu&amp;#039;un appelle votre module à partir d&amp;#039;un autre module Lua, vous n&amp;#039;avez pas besoin d&amp;#039;avoir un objet &amp;#039;&amp;#039;frame&amp;#039;&amp;#039; disponible, ce qui améliore les performances.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- Placer ici le code principal du module.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voulez que plusieurs fonctions utilisent les arguments, et qu&amp;#039;ils soient accessibles à partir de {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}, vous pouvez utiliser une fonction conteneur (&amp;#039;&amp;#039;wrapper&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = getArgs(frame)&lt;br /&gt;
		return p[funcName](args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.func1 = makeInvokeFunc(&amp;#039;_func1&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._func1(args)&lt;br /&gt;
	-- placer ici le code de la première fonction&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.func2 = makeInvokeFunc(&amp;#039;_func2&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._func2(args)&lt;br /&gt;
	-- placer ici le code de la seconde fonction&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Options ===&lt;br /&gt;
Les options suivantes sont disponibles.&lt;br /&gt;
Elles sont expliquées dans les sections ci-dessous.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	trim = false,&lt;br /&gt;
	removeBlanks = false,&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		-- code pour traiter un argument&lt;br /&gt;
	end,&lt;br /&gt;
	frameOnly = true,&lt;br /&gt;
	parentOnly = true,&lt;br /&gt;
	parentFirst = true,&lt;br /&gt;
	wrappers = {&lt;br /&gt;
		&amp;#039;Template:A wrapper template&amp;#039;,&lt;br /&gt;
		&amp;#039;Template:Another wrapper template&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	readOnly = true,&lt;br /&gt;
	noOverwrite = true&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Trimming_and_removing_blanks&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Séparation et suppression des caractères espace ===&lt;br /&gt;
Les arguments vides posent souvent problème aux nouveaux codeurs dans la conversion des modèles MediaWiki en Lua.&lt;br /&gt;
Dans la syntaxe du modèle, les chaînes vides et les chaînées constituées uniquement d&amp;#039;espaces sont considérées comme &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cependant, en Lua, les chaînes vides et les chaînées constituées d&amp;#039;espaces sont considérées comme &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela signifie que si vous ne faites pas attention à ces arguments lorsque vous écrivez vos modules Lua, vous pouvez traiter quelque chose comme &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; alors qu&amp;#039;il devrait être traité comme &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
Pour éviter cela, ce module supprime par défaut tous les arguments vides.&lt;br /&gt;
&lt;br /&gt;
De même, le caractère espace (blanc) peut causer des problèmes si vous utilisez des arguments positionnels.&lt;br /&gt;
Bien que le caractère blanc soit supprimé pour les arguments nommés venant de {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}, il est conservé pour les arguments positionnels.&lt;br /&gt;
La plupart du temps, cet espace blanc supplémentaire n&amp;#039;est pas souhaité, donc ce module le supprime par défaut.&lt;br /&gt;
&lt;br /&gt;
Cependant, parfois vous voulez utiliser des arguments vides en  entrée, et parfois vous voulez garder l&amp;#039;espace blanc supplémentaire.&lt;br /&gt;
Cela peut obliger à convertir certains modèles exactement comme ils ont été écrits.&lt;br /&gt;
Si vous voulez faire cela, vous pouvez initialiser les arguments &amp;lt;code&amp;gt;trim&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;removeBlanks&amp;lt;/code&amp;gt; à &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	trim = false,&lt;br /&gt;
	removeBlanks = false&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Custom_formatting_of_arguments&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Format personnalisé des arguments ===&lt;br /&gt;
Parfois, vous voulez supprimer certains arguments vides mais pas les autres, ou peut-être vous voulez mettre tous les arguments positionnels en minuscules.&lt;br /&gt;
Pour faire des choses similaires, utilisez l&amp;#039;option &amp;lt;code&amp;gt;valueFunc&amp;lt;/code&amp;gt;.&lt;br /&gt;
L&amp;#039;entrée de cette option doit être une fonction qui prend deux paramètres &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;, et qui renvoie une seule valeur.&lt;br /&gt;
Cette valeur est celle que vous obtenez lorsque vous accédez au champ &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; de la table &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exemple 1 :&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Cette fonction préserve l&amp;#039;espace blanc pour le premier argument positionnel, mais le supprime pour tous les autres arguments; les arguments vides restants sont supprimés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		if key == 1 then&lt;br /&gt;
			return value&lt;br /&gt;
		elseif value then&lt;br /&gt;
			value = mw.text.trim(value)&lt;br /&gt;
			if value ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				return value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exemple 2 :&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Cette fonction supprime les arguments vides et convertit tous les arguments en minuscules, mais n&amp;#039;élimine pas l&amp;#039;espace blanc des paramètres positionnels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		if not value then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		value = mw.ustring.lower(value)&lt;br /&gt;
		if mw.ustring.find(value, &amp;#039;%S&amp;#039;) then&lt;br /&gt;
			return value&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|text=&lt;br /&gt;
Les fonctions ci-dessus échouent quand l&amp;#039;entrée fournie n&amp;#039;est pas du type &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela pourrait être le cas si vous utilisez la fonction &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt; dans la fonction principale de votre module, et que cette fonction est appelée par un autre module Lua.&lt;br /&gt;
Dans ce cas, vous devez vérifier le type de l&amp;#039;entrée.&lt;br /&gt;
Ce n&amp;#039;est pas un problème si vous utilisez une fonction spécialement pour les arguments de {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}} (par exemple quand vous avez des fonctions &amp;lt;code&amp;gt;p.main&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;p._main&amp;lt;/code&amp;gt; ou similaires).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Collapse top|1=Exemples 1 et 2 avec le contrôle de type}}&lt;br /&gt;
Exemple 1 :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		if key == 1 then&lt;br /&gt;
			return value&lt;br /&gt;
		elseif type(value) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			value = mw.text.trim(value)&lt;br /&gt;
			if value ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				return value&lt;br /&gt;
			else&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple 2 :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		if type(value) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			value = mw.ustring.lower(value)&lt;br /&gt;
			if mw.ustring.find(value, &amp;#039;%S&amp;#039;) then&lt;br /&gt;
				return value&lt;br /&gt;
			else&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Collapse bottom}}&lt;br /&gt;
&lt;br /&gt;
Veuillez également noter que la fonction &amp;lt;code&amp;gt;valueFunc&amp;lt;/code&amp;gt; est appelée plus ou moins chaque fois qu&amp;#039;un argument est demandé à partir de la table &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt;, donc si vous vous souciez des performances vérifiez que votre code reste toujours efficace.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Frames_and_parent_frames&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Environnement et environnement parent ===&lt;br /&gt;
&lt;br /&gt;
Les arguments de la table &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; peuvent venir à la fois de la &amp;#039;&amp;#039;frame&amp;#039;&amp;#039; actuelle et de la &amp;#039;&amp;#039;frame&amp;#039;&amp;#039; parente.&lt;br /&gt;
Pour comprendre ce que cela signifie, prenons un exemple.&lt;br /&gt;
Supposons que nous disposons d&amp;#039;un module appelé &amp;lt;code&amp;gt;Module:ExampleArgs&amp;lt;/code&amp;gt;.&lt;br /&gt;
Ce module imprime les deux premiers arguments positionnels qu&amp;#039;il a reçus.&lt;br /&gt;
&lt;br /&gt;
{{Collapse top|1=code de Module:ExampleArgs}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local first = args[1] or &amp;#039;&amp;#039;&lt;br /&gt;
	local second = args[2] or &amp;#039;&amp;#039;&lt;br /&gt;
	return first .. &amp;#039; &amp;#039; .. second&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Collapse bottom}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Module:ExampleArgs&amp;lt;/code&amp;gt; est ensuite appelé par &amp;lt;code&amp;gt;Template:ExampleArgs&amp;lt;/code&amp;gt; qui contient le code &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:ExampleArgs|main|firstInvokeArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Ceci produit le résultat &amp;quot;firstInvokeArg&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Maintenant si on devait appeler &amp;lt;code&amp;gt;Template:ExampleArgs&amp;lt;/code&amp;gt;, on aurait ceci :&lt;br /&gt;
&lt;br /&gt;
{{(!}} class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50em; max-width: 100%;&amp;quot;&lt;br /&gt;
{{!}}-&lt;br /&gt;
! style=&amp;quot;width: 60%;&amp;quot; {{!}} Code&lt;br /&gt;
! style=&amp;quot;width: 40%;&amp;quot; {{!}} Résultat&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg|secondTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg secondTemplateArg&lt;br /&gt;
{{!)}}&lt;br /&gt;
&lt;br /&gt;
Il existe trois options qui vous permettent de modifier ce comportement : &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;parentFirst&amp;lt;/code&amp;gt;.&lt;br /&gt;
Si vous définissez &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt; alors seulement les arguments passés du &amp;#039;&amp;#039;frame courant&amp;#039;&amp;#039; seront acceptés; si vous définissez &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt; alors seulement les arguments passés du &amp;#039;&amp;#039;frame parent&amp;#039;&amp;#039; seront acceptés. Et si vous définirez &amp;lt;code&amp;gt;parentFirst&amp;lt;/code&amp;gt; alors les arguments seront passés à la fois du frame actuel et de celui du parent, mais ce dernier aura la priorité sur le frame actuel.&lt;br /&gt;
Voici les résultats en termes de &amp;lt;code&amp;gt;Template:ExampleArgs&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;&amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt;&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
{{(!}} class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50em; max-width: 100%;&amp;quot;&lt;br /&gt;
{{!}}-&lt;br /&gt;
! style=&amp;quot;width: 60%;&amp;quot; {{!}} Code&lt;br /&gt;
! style=&amp;quot;width: 40%;&amp;quot; {{!}} Résultat&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg|secondTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg&lt;br /&gt;
{{!)}}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dt&amp;gt;&amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt;&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
{{(!}} class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50em; max-width: 100%;&amp;quot;&lt;br /&gt;
{{!}}-&lt;br /&gt;
! style=&amp;quot;width: 60%;&amp;quot; {{!}} Code&lt;br /&gt;
! style=&amp;quot;width: 40%;&amp;quot; {{!}} Résultat&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}}&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstTemplateArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg|secondTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstTemplateArg secondTemplateArg&lt;br /&gt;
{{!)}}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dt&amp;gt;&amp;lt;code&amp;gt;parentFirst&amp;lt;/code&amp;gt;&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
{{(!}} class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50em; max-width: 100%;&amp;quot;&lt;br /&gt;
{{!}}-&lt;br /&gt;
! style=&amp;quot;width: 60%;&amp;quot; {{!}} Code&lt;br /&gt;
! style=&amp;quot;width: 40%;&amp;quot; {{!}} Résultat&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstInvokeArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstTemplateArg&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg|secondTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{!}} firstTemplateArg secondTemplateArg&lt;br /&gt;
{{!)}}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|text=&lt;br /&gt;
{{Ordered list&lt;br /&gt;
|1=&lt;br /&gt;
Si vous définissez les options &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt;, le module ne trouvera aucun argument à partir de {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}.&lt;br /&gt;
Ce n&amp;#039;est pas forcément ce que vous souhaitez.&lt;br /&gt;
|2=&lt;br /&gt;
Dans certaines situations, un cadre parent peut ne pas être disponible, par exemple si &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt; passe le cadre parent à la place du cadre actuel.&lt;br /&gt;
Dans ce cas, seuls les arguments du frame seront utilisés (sauf si &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt; est initialisé, dans ce cas aucun argument ne sera utilisé) et les options &amp;lt;code&amp;gt;parentFirst&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt; n&amp;#039;auront aucun effet.&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Wrappers&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Conteneurs ===&lt;br /&gt;
&lt;br /&gt;
L&amp;#039;option &amp;lt;code&amp;gt;wrappers&amp;lt;/code&amp;gt; est utilisée pour spécifier un nombre limité de &amp;#039;&amp;#039;modèles utilisés comme conteneurs&amp;#039;&amp;#039;, c&amp;#039;est à dire des modèles qui ne font qu&amp;#039;appeler un module.&lt;br /&gt;
Si ce module détecte qu&amp;#039;il est appelé à partir d&amp;#039;un modèle conteneur, il vérifie les arguments dans la &amp;#039;&amp;#039;frame&amp;#039;&amp;#039; parente; sinon il vérifie les arguements dans la &amp;#039;&amp;#039;frame&amp;#039;&amp;#039; fournie à &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela permet d&amp;#039;appeler les modules soit par {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}} soit par un modèle conteneur sans la perte de performance associée à la vérification de la &amp;#039;&amp;#039;frame&amp;#039;&amp;#039; et de celle du parent dans chaque recherche d&amp;#039;argument.&lt;br /&gt;
&lt;br /&gt;
Par exemple le seul contenu de {{tlx|Navbox}} est &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:Navbox|navbox}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (en excluant le contenu entre les balises {{tag|noinclude}}).&lt;br /&gt;
Il n&amp;#039;est pas utile de vérifier les arguments transmis directement à la déclaration {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}} pour ce modèle, car aucun argument n&amp;#039;y sera jamais spécifié.&lt;br /&gt;
Nous pouvons éviter de vérifier les arguments passés à {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}} en utilisant l&amp;#039;option &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt; , mais si nous le faisons, {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}} ne fonctionnera pas non plus depuis les autres pages.&lt;br /&gt;
Si c&amp;#039;était le cas, alors {{tmpl|0={{para|text|$1}}|Quelque mots}} dans le code {{tmpl|0={{tlc|&amp;lt;nowiki&amp;gt;#invoke:Navbox&amp;lt;/nowiki&amp;gt;|navbox|3=text=$1}}|Quelque mots}} serait complètement ignoré, quelque soit la page où il a été utilisé.&lt;br /&gt;
En utilisant l&amp;#039;option &amp;lt;code&amp;gt;wrappers&amp;lt;/code&amp;gt; pour indiquer que [[Template:Navbox]] est un conteneur, nous pouvons faire que {{tmpl|0={{tlc|&amp;lt;nowiki&amp;gt;#invoke:Navbox&amp;lt;/nowiki&amp;gt;|main|3=text=$1}}|Quelque mots}} fonctionne sur la plupart des pages, tout en ne nécessitant pas que le module vérifie les arguments sur la page [[Template:Navbox]] lui-même.&lt;br /&gt;
&lt;br /&gt;
Les conteneurs peuvent être spécifiés par des chaînes ou des tableaux de chaînes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	wrappers = &amp;#039;Template:Wrapper template&amp;#039;&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	wrappers = {&lt;br /&gt;
		&amp;#039;Template:Wrapper 1&amp;#039;,&lt;br /&gt;
		&amp;#039;Template:Wrapper 2&amp;#039;,&lt;br /&gt;
		-- Vous pouvez ajouter ici un nombre quelconque de conteneurs.&lt;br /&gt;
	}&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|text=&lt;br /&gt;
{{Ordered list&lt;br /&gt;
|1=&lt;br /&gt;
Le module détecte automatiquement si l&amp;#039;appel vient de la sous-page &amp;lt;code&amp;gt;/sandbox&amp;lt;/code&amp;gt; d&amp;#039;un modèle de conteneur, il n&amp;#039;est donc pas nécessaire de spécifier explicitement des pages de bac à sable.&lt;br /&gt;
|2=&lt;br /&gt;
L&amp;#039;option &amp;lt;code&amp;gt;wrappers&amp;lt;/code&amp;gt; modifie effectivement les valeurs par défaut des options &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt;.&lt;br /&gt;
Si par exemple, &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt; était défini explicitement à &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;wrappers&amp;lt;/code&amp;gt; initialisé, les appels via les modèles conteneur entraîneraient à la fois le chargement des arguments du &amp;#039;&amp;#039;frame&amp;#039;&amp;#039; et de ceux des parents, alors que les appels sans le modèle conteneur entraîneraient le chargement uniquement des arguments du &amp;#039;&amp;#039;frame&amp;#039;&amp;#039;.&lt;br /&gt;
|3=&lt;br /&gt;
Si l&amp;#039;option &amp;lt;code&amp;gt;wrappers&amp;lt;/code&amp;gt; est définie et qu&amp;#039;aucun &amp;#039;&amp;#039;frame parent&amp;#039;&amp;#039; n&amp;#039;est disponible, le module récupèrera toujours les arguments du &amp;#039;&amp;#039;frame&amp;#039;&amp;#039; passé à &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Ecrire dans la table &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Il est quelques fois nécessaire d&amp;#039;écrire de nouvelles valeurs dans la table &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt;.&lt;br /&gt;
Ceci est possible avec les valeurs par défaut de ce module.&lt;br /&gt;
(Néanmoins gardez à l&amp;#039;esprit qu&amp;#039;au niveau codage, il vaut mieux créer une nouvelle table avec les nouvelles valeurs et copier les arguments de la table de &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; selon les besoins).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
args.foo = &amp;#039;valeur quelconque&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez modifier ce comportement avec les options &amp;lt;code&amp;gt;readOnly&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;noOverwrite&amp;lt;/code&amp;gt;.&lt;br /&gt;
Si &amp;lt;code&amp;gt;readOnly&amp;lt;/code&amp;gt; est initialisé, il n&amp;#039;est plus du tout possible d&amp;#039;écrire des valeurs dans la table &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt;.&lt;br /&gt;
Si &amp;lt;code&amp;gt;noOverwrite&amp;lt;/code&amp;gt; est défini, il est possible d&amp;#039;ajouter de nouvelles valeurs à la table, mais il n&amp;#039;est pas possible d&amp;#039;ajouter une valeur si elle vient réécraser un argument passé à partir de {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Ref_tags&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Balises ref ===&lt;br /&gt;
Cemodule utilise les [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual#Metatables|métatables]] pour récupérer les arguments de {{tlc|&amp;lt;nowiki&amp;gt;#invoke:...&amp;lt;/nowiki&amp;gt;}}.&lt;br /&gt;
Cela permet d&amp;#039;accéder aux arguments du frame et à ceux du parent sans passer par la fonction &amp;lt;code&amp;gt;pairs()&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela peut vous aider si votre module a reçu des balises {{xtag|ref}} en entrée.&lt;br /&gt;
&lt;br /&gt;
Dès que les balises {{xtag|ref}} sont accédées par Lua, elles sont traitées par le logiciel MediaWiki et la référence apparaîtra dans la liste des références au bas de l&amp;#039;article.&lt;br /&gt;
Si votre module continue à omettre la balise de référence de la sortie, vous finirez par avoir une référence fantôme  - une référence qui apparaît dans la liste des références, mais aucun numéro ne la relie.&lt;br /&gt;
Ceci a été un problème avec les modules qui utilisent &amp;lt;code&amp;gt;pairs()&amp;lt;/code&amp;gt; pour détecter s&amp;#039;il faut utiliser les arguments à partir du &amp;#039;&amp;#039;frame&amp;#039;&amp;#039; ou du &amp;#039;&amp;#039;frame parent&amp;#039;&amp;#039;, car ces modules traitent automatiquement chaque argument disponible.&lt;br /&gt;
&lt;br /&gt;
Ce module résoud le problème en permettant l&amp;#039;accès à la fois aux arguments du &amp;#039;&amp;#039;frame&amp;#039;&amp;#039; et à celui du parent, tout en les récupérant quand lorsque c&amp;#039;est nécessaire.&lt;br /&gt;
Cependant le problème se produira toujours si vous utilisez &amp;lt;code&amp;gt;pairs(args)&amp;lt;/code&amp;gt; ailleurs dans votre module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Known_limitations&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Limitations connues ===&lt;br /&gt;
L&amp;#039;utilisation des métatables a aussi ses inconvénients.&lt;br /&gt;
La plupart des outils Lua sur les tableaux usuels ne fonctionneront pas correctement sur la table &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt;, y compris l&amp;#039;opérateur &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, la fonction &amp;lt;code&amp;gt;next()&amp;lt;/code&amp;gt;, et les fonctions de la bibliothèque &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt;.&lt;br /&gt;
Si l&amp;#039;utilisation de ces éléments est importante pour votre module, vous devriez utiliser votre propre fonction de traitement des arguments au lieu de ce module.&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
{{ModuleQuality}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Lua metamodules{{#translation:}}]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Module documentation pages{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| #default=&lt;br /&gt;
  {{#invoke:Template translation|renderTranslatedTemplate|template=Module:Arguments/doc|noshift=1|uselang={{int:lang}}}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>mw&gt;Wladek92</name></author>
	</entry>
</feed>