Jump to content

User:Hexasoft/Lua

From Wikipedia

Lua est maintenant actif sur fr:, et il est « poussé » pour devenir un remplaçant des modèles. Lua se programme dans des modules, associés à un nouvel espace (Module:).
Lua est un langage de programmation permettant, comme les modèles, de construire un résultat (du wikitexte) à partir des différents paramètres reçus et de la logique interne du module.

Utiliser Lua présente certains avantages :

  • ils sont plus rapides à la fois en terme d'exécution et en terme d'appel. C'est la motivation principale de l'introduction de Lua, car les modèles sont semble-t-il excessivement lourds à appeler.
  • un même module peut contenir de nombreuses fonctions :
    • des fonctions utilisables « de l'extérieur » (donc fournir les fonctionnalités de plusieurs modèles)
    • des fonctions utilisables « de l'intérieur » (permettant de regrouper certains traitements au lieu de les externaliser ou de les dupliquer)
  • les modules peuvent s'utiliser mutuellement. Il est donc possible (comme avec les modèles) d'avoir des modules « boîte à outils »
  • il s'agit d'un vrai langage et non d'une collection linéaire d'éléments. Les éléments de contrôle sont externes (les parserfunctions) et sont limités.
  • la lisibilité est plus grande : la mise en page n'est pas importante (seul le code l'est). De plus il y a une coloration syntaxique aidant la lecture.

J'ai créé un module taxobox : Module:Taxobox-fr, qui utilise plusieurs modules annexes : Module:Taxobox-outils (fonctions de traitement des éléments d'une taxobox), Module:Taxobox-data (données des taxobox, comme les rangs de classification, les catégories…), et Module:Taxobox-briques (fonctions jouant le rôle des « briques de base » des infobox, chez nous les Infobox V3.
Ce module s'appelle à travers un modèle : Template:Taxobox-fr, selon le mécanisme classique (du point de vue du rédacteur).

Ce module taxobox implique certains changements. Certains me semble importants et souhaitables, d'autres sont intéressant tout en restant d'une importance moindre, d'autres enfin sont possiblement non souhaitables.

Voici ces changements :

  • il s'agit d'un modèle (point de vue du rédacteur) monolithique. Cela implique donc l'existence d'un seul modèle pour décrire toute la taxobox, et non plus d'un ensemble de petits modèles.
  • le passage à un modèle monolithique fait qu'il n'est pas nécessaire de répéter certains paramètres. C'est le cas du paramètre "règne" qui n'est donné qu'une fois (et qui disparaît donc de la syntaxe des autres éléments).
  • la structure de description est conservée : le contenu est décrit par des séries de lignes (au lieu de séries de modèles) ayant globalement la même syntaxe, et dont l'ordre détermine l'affichage.
  • certains éléments de syntaxe changent : les paramètres nommés des différents modèles disparaissent (ils sont présents mais avec une syntaxe différente).
  • le module est en mesure d'agit automatiquement sur le sous-titre et la mise en forme du titre, même dans des cas complexes (homonymie par exemple).
  • d'une façon plus générale le traitement des textes est plus élaboré, permettant de traiter correctement toutes les mises en forme (par exemple les hybrides).
  • l'aspect global du module permet de tester la cohérence des entrées (exemple : présence d'au moins une entrée "taxon", agencement cohérent des différents éléments, commencer par "début", …), et de corriger automatiquement certains points (ou de générer une erreur).
  • il y a une gestion globale des erreurs, avec soit l'affichage d'une boîte d'erreur décrivant le problème (si erreur fatale comme l'absence de règne), soit l'insertion de catégories d'erreurs en fonction du type de problème (syntaxe, structure…). Il est également possible d'obtenir l'affichage des erreurs en mode "débug" avec une description claire et l'indication du lieu de l'erreur.
  • le titre de la taxobox est calculé automatiquement à partir des informations : c'est le nom scientifique de l'entrée "taxon" la plus basse. Ceci implique qu'il n'y a plus de titre à fournir dans la partie "début".

Comme un dessin vaut mieux qu'un long discours voici un exemple simple (certains éléments ont été modifiés pour tenir à l'écran (image, auteur…) :

Format « taxobox-module »Format « taxobox-fr »
{{Hexasoft-test | règne=algue | nv=Haptophytes
|début|img.png |légende |classification|AlgaeBASE
|rang |sous-règne |Hacrobia
|taxon |embranchement |Haptophyta |auteurs, date
|taxons |
* classe ''[[Pavlovophyceae]]''
** ordre ''[[Pavlovales]]''
* classe ''[[Prymnesiophyceae]]'' Hibberd, 1976
** ordre ''[[Prymnesiales]]''
** ordre ''[[Phaeocystales]]''
** ordre ''[[coccolithophore|Isochrysidales]]''
** ordre ''[[coccolithophore|Coccolithales]]''
|position |{{Phylogénie Eukaryota}} |Cryptophyta
|fin }}
{{Taxobox début |algue |img.png |légende |classification=AlgaeBASE }}
{{Taxobox |sous-règne |Hacrobia }}
{{Taxobox taxon |algue |embranchement |Haptophyta |auteurs, date }}
{{Taxobox taxons |
* classe ''[[Pavlovophyceae]]''
** ordre ''[[Pavlovales]]''
* classe ''[[Prymnesiophyceae]]'' Hibberd, 1976
** ordre ''[[Prymnesiales]]''
** ordre ''[[Phaeocystales]]''
** ordre ''[[coccolithophore|Isochrysidales]]''
** ordre ''[[coccolithophore|Coccolithales]]''
}}
{{Taxobox position |{{Phylogénie Eukaryota}} |Cryptophyta }}
{{Taxobox fin}}

Dans ce format on commence par le seul paramètre nommé obligatoire : le règne. Le paramètre nommé "nv" signifie "nom vernaculaire". Il est optionnel et est utilisé pour les sous-titres.
On retrouve ensuite la structure habituelle, à savoir des lignes qui décrivent les éléments servant à construire la taxobox, dans l'ordre.
Chaque élément commence par un mot-clé qui l'identifie. Ce mot-clé est repris des noms des modèles de taxobox, sans le "Taxobox", avec une exception : {{Taxobox | … }} est remplacé par rang (sinon ça ferait un champs vide si on enlève "taxobox").
Suivent ensuite les paramètres non nommés usuels, dans l'ordre usuel, à l'exception du règne qui n'est plus présent car global.
On constate un changement de syntaxe sur les paramètres nommés. Dans la partie "début" la partie « | classification=AlgaeBASE » devient « | classification | AlgaeBASE ».
Il existe également un autre changement de syntaxe : les paramètres nommés dont le rôle est présent/absent (par exemple "ancien=oui" dans le modèle {{Taxobox | … }} sont simplement remplacés par la présence du mot-clé : {{Taxobox | famille | Gekkonidae | ancien=oui }} devient « |rang | famille | Gekkonidae | ancien ».
À noter que le mot-clé "fin" est optionnel : le module détecte la fin de la taxobox et ferme celle-ci si ce n'est déjà fait.