Module:TableBuilder/Documentation

Aller à la navigation Aller à la recherche

La documentation pour ce module peut être créée à Module:TableBuilder/Documentation/doc

Erreur de script : Erreur Lua à la ligne 1 : unexpected symbol near '{'.

{{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>

== Fonctions spécifiques ==
* <code>minsert( ... )</code> — permet des inserts multiples, pour ajouter en une opération plusieurs éléments à la fin de la table. Les paramètres passés à la fonction valant false ou nil 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>

{{Projet Scribunto}}

<includeonly>
[[Catégorie:Méta-module]]
[[Catégorie:Module appelé par un autre module]]
</includeonly>