Aller au contenu

Module:TableBuilder/Documentation

De Baripedia
Ce module à risque est inclus sur un très grand nombre de pages et ne peut pas être modifié.

Cette protection ne constitue pas obligatoirement une approbation de la version actuelle. Vous pouvez proposer une modification en page de discussion. Lorsqu'un compromis sera trouvé en page de discussion, vous pourrez demander la modification auprès des administrateurs. · Journal des protections.

TableBuilder est un module qui applique aux fonctions de la librairie Table une interface fluide. Le code est ainsi à la fois plus concis et plus clair.

Attention : ce module ne devrait être utilisé que pour des tables séquences, ou au pire des tables dont les éléments sont connu 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.

Vous devez premièrement charger le module :

<syntaxhighlight lang="lua" class="" id="" style="" inline="1">local TableBuilder = require('Module:TableBuilder')</syntaxhighlight>

Deuxièmement, vous devez instancier le tableau, avec new pour une nouvelle table, avec set pour une table existante, ou en clonant une table existante.

<syntaxhighlight lang="lua" class="" id="" style="" inline="1">local tab1 = TableBuilder.new()</syntaxhighlight>
<syntaxhighlight lang="lua" class="" id="" style="" inline="1">TableBuilder.set(tab2)</syntaxhighlight>
<syntaxhighlight lang="lua" class="" id="" style="" inline="1">local tab1 = TableBuilder.clone(tab3)</syntaxhighlight>

Ensuite, vous pouvez utiliser les méthodes énumérées dans la librairie Table (insert, remove, sort, maxn) ou une des fonctions spécifiques décrite ci-dessous.

Enfin, vous devez concaténer la table en utilisant la méthode concat() :

tab.concat()

Fonction specifique

[modifier le wikicode]
  • minsert( ... ) — 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.
  • tinsert( table2, i, j ) — ajoute à la fin de la table les éléments table2[i] à table2[j]. La valeur par défaut de i est 1, et la valeur par défaut de j est la longueur de la table. Si i est plus grand que j aucun élément n'est ajouté.

TableBuilder.clone 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 mw.loadData.

Cette fonction ne devrait pas être utilisée sur la totalité de la table chargée par loadData (utiliser require sera plus économe en mémoire) mais sur une petite sous-table.

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