# Perfectionnement en Lua/Scribunto objet Site

Nous révisons les principes de base ; en abordant la librairie site #LUAREF. Sur la base de la documentation nous sommes en mesure d’afficher les valeurs contenues dans les clés indiquées. La librairie en tant qu’objet est une table Lua que nous devons manipuler pour extraire les données.
Nous souhaitons écrire un module capable de retourner les informations de la table ; dont l’usage soit raisonnablement simple mais complet. Nous nous focalisons sur l’organisation du code, le traitement des arguments. Nous utilisons une mise en forme simple pour l’affichage des données.

## Objectifs de la leçon

    Consolider les principes abordés lors de l’initiation, voir Introduction au Lua. En particulier, l’itération des tables, l’utilisation des clés, l’affichage des valeurs, le test du type de données, l’organisation des fonctions et sous-fonctions.
Envisager un modèle capable d’afficher les données de la librairie

## Prérequis

Ce chapitre suppose que vous ayez assimilé la leçon [].

## Créer un script Lua pour utiliser la librairie mw.site

* Accéder au Module:Bac à sable.
* Supprimer le code existant.
* Ajouter le code suivant et enregistrer la page:
À ce stade l’utilisateur peut choisir une valeur dans la table, en précisant la clé, lorsqu’il invoque la fonction. Nous développons notre fonction pour lui permettre d’afficher par défaut, toutes le valeurs de la table principale (à l’exception des tables). Pour simplifier le code nous créons une sous-fonction : form_site.
Pour utiliser cette sous fonction nous l’appelons à partir de la fonction site ; lorsque le frame ne contient pas d’argument. Ajoutez la ligne suivante à la fonction site.

### Manipuler les tables de l’objet Site

Nous souhaitons afficher les informations contenues dans la table stats. Nous devons gérer la présence d’un argument dont la valeur est une table. Nous afficherons pour cette table les clés dont les valeurs sont des chaines de caractères ou des nombres.
Nous modifions la sous fonction form_site pour qu’elle soit capable de traiter la table stats.
Nous pouvons modifier la fonction site, en ajoutant la condition suivante qui reconnait une table passée en argument et affiche son contenu partiel.

#### Accéder aux valeurs de la table stat contenue dans l’objet Site

Nous devons tester la présence d’un second argument, que nous utilisons pour filtrer la valeur de la table reçue en premier argument.

#### Accéder aux valeurs de la table namespaces contenues dans l’objet Site

Lorsque nous invoquons la table namespaces notre script reste muet. Nous modifions la fonction showTable pour qu’elle nous montre le contenu de la table namespaces.

#### Le résultat doit commencer ainsi

   * 1 ; table
   * 2 ; table
   * 3 ; table
   … La liste se poursuit, elle montre les clés correspondantes aux espaces de noms dont les données sont contenues dans des tables respectives.
   En d’autre termes notre fonction form_table reste muette, car toutes les valeurs sont des tables. Nous pouvons le vérifier en utilisant tostring(v)…
Le module Site lib2 trois fonctions :
* p.site est la fonction principale à ce stage, elle retourne toutes les propriétés ou bien uniquement celle de l’espace reçu en argument
* p.namespace retourne les propriétés de l’espace reçu en argument.
* form_ns(t) est une sous-fonction qui reçoit une table des données à afficher et retourne les donnés mises en forme.

## Tester votre nouveau script

* Utiliser cette page de discussion, ou bien votre page de test.
    Dans les deux cas pensez à désactiver vos tests une fois terminés. Encadrez les, avec la balise <nowiki> disponible dans la barre d’outils ; cela facilite le suivi des erreurs de scripts.
* Ajouter le code suivant et enregistrer la page :

### Le résultat doit correspondre à ceci

   * stats ; table
   * siteName ; Wikiversité
   * currentVersion ; 1.29.0-wmf.7
   * interwikiMap ; function
   * talkNamespaces ; table
   * scriptPath ; /w
   * server ; //fr.wikiversity.org
   * stylePath ; /w/skins
   * namespaces ; table
   * subjectNamespaces ; table
   * contentNamespaces ; table
   Wikiversité

   #### siteName

       Wikiversité

   #### currentVersion

       1.29.0-wmf.7

   #### scriptPath

       /w

   #### server

       //fr.wikiversity.org

   #### stylePath

       /w/skins

   #### articles

       12005

   #### admins

       9

   #### edits

       642824

   #### users

       35038

   #### files

       84

   #### pages

       40741

   #### activeUsers

       108

## Conclusion

Félicitation! Vous êtes capable de créer, tester et comprendre un script Lua qui utilise la librairie Site. Vous savez utiliser l’objet frame pour passer les arguments à la fonction site. Vous êtes en mesure d’afficher les chaines et nombres contenus dans la table site et la table stats.
Continuez avec la leçon suivante pour savoir comment manipuler une table complexe.