SFTG Recherche, soutient un projet d'analyse de l'usage, de l'intérêt et de la contribution à ce site. Merci d'avoir répondu à l'enquête.
Modifications
Sauter à la navigation
Sauter à la recherche
m
Module:TableBuilder/Documentation (voir la source)
Version du 10 août 2014 à 05:11
, 10 août 2014 à 05:11Accord grammatical
{{Protection}}
TableBuilder est un module qui applique aux fonctions de la [[mw:Extension:Scribunto/Lua reference manual/fr#Librairie Table|librairie Table]] une [[Désignation chaînée|interface fluide]]. Le code est ainsi à la fois plus concis et plus clair.
Attention : ce module ne devrait être utilisé que pour des tables [[:mw:Extension:Scribunto/Lua_reference_manual/fr#s.C3.A9quence|séquences]], ou au pire des tables dont les éléments sont connus et limités. En effet, ajouter à la table un élément ayant pour index le nom d'une de ces fonctions remplace la fonction par cet élément.
== Utilisation ==
Vous devez premièrement charger le module :
{{code|lang=lua|code=local TableBuilder = require('Module:TableBuilder')}}
Deuxièmement, vous devez instancier le tableau, avec <code>new</code> pour une nouvelle table, avec <code>set</code> pour une table existante, ou en clonant une table existante.
{{code|lang=lua|code=local tab1 = TableBuilder.new()}}<br />
{{code|lang=lua|code=TableBuilder.set(tab2)}}<br />
{{code|lang=lua|code=local tab1 = TableBuilder.clone(tab3)}}
Ensuite, vous pouvez utiliser les méthodes énumérées dans la [[mw:Extension:Scribunto/Lua reference manual/fr#Librairie Table|librairie Table]] (<code>insert</code>, <code>remove</code>, <code>sort</code>, <code>maxn</code>) ou une des fonctions spécifiques décrites ci-dessous.
Enfin, vous devez concaténer la table en utilisant la méthode <code>concat()</code> :
<code>tab.concat()</code>
== Fonction specifique ==
* <code>minsert( ... )</code> — permet des inserts multiples, pour ajouter en une opération plusieurs éléments à la fin de la table. Les paramètres nil passés à la fonction sont ignorés.
* <code>tinsert( table2, i, j )</code> — ajoute à la fin de la table les éléments <code>table2[i]</code> à <code>table2[j]</code>. La valeur par défaut de <code>i</code> est 1, et la valeur par défaut de <code>j</code> est la longueur de la table. Si <code>i</code> est plus grand que <code>j</code> aucun élément n'est ajouté.
== clone ==
<code>TableBuilder.clone</code> duplique une table existante, de façon récursive.
Contrairement à mw.clone, cette fonction ne clone pas la meta-table, mais utilise la meta-table de TableBuilder. Ceci permet notamment de modifier une table chargée par <code>mw.loadData</code>.
Cette fonction ne devrait pas être utilisée sur la totalité de la table chargée par loadData (utiliser <code>require</code> sera plus économe en mémoire) mais sur une petite sous-table.
== Exemples ==
<syntaxhighlight lang="lua">
local TableBuilder = require( 'Module:TableBuilder' )
local date = { 'Cet exemple a été modifié le' }
TableBuilder.set( date )
date.insert( "4" )
.insert( "2013" )
.insert( 3, "septembre" )
local time = TableBuilder.new()
local heure, minute = "12", "8"
local seconde
time.minsert( "à", heure, "heures et", minute, "minutes", seconde, seconde and "secondes" )
date.tinsert( time )
local s = date.concat( ' ' ) .. "."
--s = 'Cet exemple a été modifié le 4 septembre 2013 à 12 h et 8 minutes.'
</syntaxhighlight>
<includeonly>
{{Projet Scribunto}}
</includeonly>
<noinclude>
[[Catégorie:Documentation de module]]
</noinclude>
TableBuilder est un module qui applique aux fonctions de la [[mw:Extension:Scribunto/Lua reference manual/fr#Librairie Table|librairie Table]] une [[Désignation chaînée|interface fluide]]. Le code est ainsi à la fois plus concis et plus clair.
Attention : ce module ne devrait être utilisé que pour des tables [[:mw:Extension:Scribunto/Lua_reference_manual/fr#s.C3.A9quence|séquences]], ou au pire des tables dont les éléments sont connus et limités. En effet, ajouter à la table un élément ayant pour index le nom d'une de ces fonctions remplace la fonction par cet élément.
== Utilisation ==
Vous devez premièrement charger le module :
{{code|lang=lua|code=local TableBuilder = require('Module:TableBuilder')}}
Deuxièmement, vous devez instancier le tableau, avec <code>new</code> pour une nouvelle table, avec <code>set</code> pour une table existante, ou en clonant une table existante.
{{code|lang=lua|code=local tab1 = TableBuilder.new()}}<br />
{{code|lang=lua|code=TableBuilder.set(tab2)}}<br />
{{code|lang=lua|code=local tab1 = TableBuilder.clone(tab3)}}
Ensuite, vous pouvez utiliser les méthodes énumérées dans la [[mw:Extension:Scribunto/Lua reference manual/fr#Librairie Table|librairie Table]] (<code>insert</code>, <code>remove</code>, <code>sort</code>, <code>maxn</code>) ou une des fonctions spécifiques décrites ci-dessous.
Enfin, vous devez concaténer la table en utilisant la méthode <code>concat()</code> :
<code>tab.concat()</code>
== Fonction specifique ==
* <code>minsert( ... )</code> — permet des inserts multiples, pour ajouter en une opération plusieurs éléments à la fin de la table. Les paramètres nil passés à la fonction sont ignorés.
* <code>tinsert( table2, i, j )</code> — ajoute à la fin de la table les éléments <code>table2[i]</code> à <code>table2[j]</code>. La valeur par défaut de <code>i</code> est 1, et la valeur par défaut de <code>j</code> est la longueur de la table. Si <code>i</code> est plus grand que <code>j</code> aucun élément n'est ajouté.
== clone ==
<code>TableBuilder.clone</code> duplique une table existante, de façon récursive.
Contrairement à mw.clone, cette fonction ne clone pas la meta-table, mais utilise la meta-table de TableBuilder. Ceci permet notamment de modifier une table chargée par <code>mw.loadData</code>.
Cette fonction ne devrait pas être utilisée sur la totalité de la table chargée par loadData (utiliser <code>require</code> sera plus économe en mémoire) mais sur une petite sous-table.
== Exemples ==
<syntaxhighlight lang="lua">
local TableBuilder = require( 'Module:TableBuilder' )
local date = { 'Cet exemple a été modifié le' }
TableBuilder.set( date )
date.insert( "4" )
.insert( "2013" )
.insert( 3, "septembre" )
local time = TableBuilder.new()
local heure, minute = "12", "8"
local seconde
time.minsert( "à", heure, "heures et", minute, "minutes", seconde, seconde and "secondes" )
date.tinsert( time )
local s = date.concat( ' ' ) .. "."
--s = 'Cet exemple a été modifié le 4 septembre 2013 à 12 h et 8 minutes.'
</syntaxhighlight>
<includeonly>
{{Projet Scribunto}}
</includeonly>
<noinclude>
[[Catégorie:Documentation de module]]
</noinclude>