Module:TableBuilder/Documentation
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 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
[modifier le code]Vous devez premièrement charger le module :
local TableBuilder = require('Module:TableBuilder')
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.
local tab1 = TableBuilder.new()
TableBuilder.set(tab2)
local tab1 = TableBuilder.clone(tab3)
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écrites ci-dessous.
Enfin, vous devez concaténer la table en utilisant la méthode concat()
:
tab.concat()
Fonctions spécifiques
[modifier le code]minsert( ... )
— 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.tinsert( table2, i, j )
— ajoute à la fin de la table les élémentstable2[i]
àtable2[j]
. La valeur par défaut dei
est 1, et la valeur par défaut dej
est la longueur de la table. Sii
est plus grand quej
aucun élément n'est ajouté.
clone
[modifier le code]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.
Exemples
[modifier le code]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.'