Projet:Scribunto
Présentation
Ce projet coordonne les efforts des développeurs Lua pour créer de nouveaux modèles utilisant l'extension Scribunto déployée le 18 février 2013 sur la version francophone de Wikipédia.
Cette page n'est pas encore complète, n'hésitez pas à l'améliorer ! C'est simple et facile.
- Que fait cette extension ?
Scribunto permet de générer du contenu automatisé (wikicode), en langage de programmation Lua, en remplacement ou au sein des modèles de MediaWiki.
- Pourquoi l'utiliser ?
Les modèles utilisent les fonctions d'analyse syntaxique pour effectuer des traitements complexes (gestion de paramètres, conditions, etc.). Cependant ces derniers posent de nombreux problèmes d'efficacité et de lisibilité, rendant plus difficile l'édition et la création de modèles. De plus les modèles complexes incluent des modèles qui incluent des modèles qui… ce qui a un impact très fort sur les performances.
Lua permet de rendre ces traitements plus lisibles, plus compacts, plus légers (au niveau des serveurs) et plus puissants.
- Qu'est-ce que cela change pour l'édition des articles ?
En pratique rien du tout ! Le consensus est de ne pas appeler directement des modules depuis l'espace encyclopédique. Ainsi dans les articles il n'y a que des appels de modèles et ce sont des modèles qui font appel aux modules.
Attention ! Les documentations TemplateData devraient toujours être renseignées pour les modèles ayant des paramètres. Cela est encore plus vrai pour les modèles sollicitant des modules. En effet, contrairement à un modèle classique qui a des paramètres nommés ou numérotés (par exemple {{{1}}}
) explicites, un modèle sollicitant un module peut lui passer des paramètres "implicites" n'apparaissant pas dans le wikicode du modèle. Renseigner le TemplateData du modèle est donc indispensable, tant pour indiquer au lecteur de la documentation les paramètres existants que pour permettre au formulaire d'insertion des modèles de l'Éditeur visuel de disposer de la liste exhaustive des paramètres valides.
- 15 août 2024
- Les objets
mw.title
possèdent désormais une propriétécategories
retournant un tableau des catégories d'une page. Cette propriété est considérée coûteuse (voir phab:T50175 et gerrit:919459).
- 14 décembre 2023
- Les redirections de modules sont désormais possibles avec la syntaxe
return require [[Module:Foo]]
et le renommage de module laisse désormais une redirection automatique (voir phab:T120794 et gerrit:574086).
- 13 octobre 2022
- Ajout de la fonction
mw.loadJsonData()
, qui permet de charger des données depuis un fichier json, à la différence àmw.loadData()
qui les charge depuis une table lua (voir phab:T217500 et gerrit:833990).
- Manuel de référence de Lua
- en français − peut être en retard de traduction par rapport à la version anglaise
- en anglais
- Projet:Scribunto/Guide
- (fr) v:Initiation au Lua avec Scribunto (sur Wikiversité)
- (en) API specification : adaptations MediaWiki par rapport à Lua
- Amélioration du guide de programmation Lua et de la page aide:Module ;
- Rédaction des pages de documentation manquantes.
- Principaux modules
- Bandeau, dédié à la mise en forme de bandeaux ;
- Autorité, Bases et Dictionnaires pour l'insertion des liens en bas des articles (voir Projet:Bases pour le projet dédié) ;
- Biblio, utilisé par les modèles comme {{Ouvrage}} et {{Lien web}} ;
- Date, dédié au calendrier républicain et au modèle {{Date}} ;
- Langue, pour le modèle {{Langue}} ;
- Infobox, pour les infobox (voir Projet:Infobox pour le projet dédié) ;
- Wikidata, pour l'obtention de données issues de Wikidata.
- Méta-modules
- Arguments, simplifiant la gestion des frames ;
- Outils, contient quatre fonctions pratiques ;
- TableBuilder, applique aux fonctions de la librairie Table une interface fluide ;
- TableTools, fournit des fonctions de gestion des tables lua (length, deepCopy, etc.) ;
- Yesno, les booléens n'étant pas gérés nativement en lua, un module dédié est nécessaire.
- Autres modules pratiques
- Format, dédié à la mise en forme de textes ;
- Romain et Chiffres romains, pour la gestion des chiffres romains ;
- String et String2, pour le traitement de chaînes de caractères depuis des modèles ;
- Linguistique, quelques fonctions de manipulation de chaîne dont certaines pour l'accord en genre ;
- Test et UnitTests dédiés aux… tests ;
- ControlArgs, pour lister des tables (mw, frame, args...), documenter les tests…
- Documentation module module générant les entêtes de documentation pour les modules et leurs pages de documentation. Module appelé directement par mediawiki lors des affichages de page, donc à ne jamais inclure dans les pages de documentation.
Voir aussi la liste des modules en langage lua.