Ouvrir le menu principal

Wikipédia β

Lua-logo-nolabel.svg
Raccourci [+]
P:Lua

Bienvenue sur le Projet Scribunto !

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 (ni esthétique), n'hésitez pas à l'améliorer !

Introduction à Scribunto et LuaModifier

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 actuels utilisent les fonctions du parseur 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 actuel 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 − comme avant Scribunto − et ce sont des modèles qui font appel aux modules.

Certains modèles ont leur code modifié pour appeler des fonctions écrites en Lua, sans que leur syntaxe ne change. À plus long terme, la syntaxe des modèles pourra − éventuellement − évoluer pour profiter des nouvelles fonctionnalités d'autres modèles.

NouvellesModifier

Note : un   indique que la fonctionnalité est présente sur fr:

  •   la méthode frame:argumentPairs() est maintenant obsolète. Les fonctions pairs() et ipairs() fonctionnent désormais sur les tables frame.args
  •   Ajout d'une méthode getContent() (dans mw.title) permettant d'obtenir une version non interprétée (raw) d'une page.
  •   Ajout d'une librairie mw.text. Voir cette modification. Non encore validé Validée mais non intégrée dans Mediawiki. Cette librairie semble avoir deux rôles : contenir des fonctions générales utiles (trim, *split, truncate…) et fournir un moyen de gérer les tags (nowiki, …). À suivre.
  •   Ajout de la possibilité d'avoir une sous-page de documentation pour les modules. Voir cette modification. Le nom de la sous-page de documentation est liée au message système scribunto-doc-subpage-name. Ceci est dans le git « master », ça sera sans doute disponible lors de la prochaine release.
    • addendum : il semble que suite à la demande de certains wikis qui n'utilisent pas de sous-page pour leurs documentations il soit prévu une transformation du système de docs. Ce ne serait plus une sous-page dont le nom est indiqué par scribunto-doc-subpage-name mais une page indiquée par scribunto-doc-page-name, cette dernière pouvant contenir éventuellement un "$1" (ou un Scribunto, ce n'est pas clair) afin que ceux préférant des sous-pages puissent utiliser "$1/documentation" par exemple.
    • ceci risque peut-être de retarder la mise à jour car il est demandé à ce que ce changement soit appliqué à scribunto avant le déploiement général (aujourd'hui et le 18 mars) afin d'éviter d'imposer des renommages et changements de fonctionnement à tous les autres wikis… À suivre.
  •   Un développeur a créé l'objet mw.title. Celui-ci permettra d'accéder en Lua au titre et à l'espace du nom de l'article, ainsi que d'avoir la fonctionnalité #ifexist:. Ceci est dans le git « master », ça sera sans doute disponible lors de la prochaine release.
  •   La librairie ustring permet la manipulation correcte des chaînes en UTF-8. Elle est présente sur fr:, mais attention : contrairement à string qui s'utilise directement, ustring se trouve actuellement dans l'objet mw (il faut donc appeler mw.ustring pour y accéder).

Ce qui manqueModifier

  • les différentes variantes pour obtenir la date et l'heure sous diverses formes. Note : os.date("*t") retourne une table contenant la date. Il s'agit toutefois de la date et de l'heure du serveur et non la date et l'heure locale.

Projets en coursModifier

  • Création de nouvelles fonctions Lua. Si vous voulez voir un modèle réécrit avec Lua, laissez un message en page de discussion ;
  • Amélioration du guide de programmation Lua et de la page aide:Module ;
  • Tests de l'extension Scribunto et suggestion de nouvelles fonctionnalités.

Modules existantsModifier

Les fonctions Lua sont regroupées par modules, de préférence thématiques.

  • Format, dédié à la mise en forme de textes
  • Date, dédié au calendrier républicain et au modèle {{Date}}
  • MagicDate, permet d'obtenir tous les retours de {{LOCALTIME}}, {{CURRENTYEAR}} et autres (sans utiliser preprocess), ainsi que quelques nouvelles valeurs.
  • Bandeau, dédié à la mise en forme de bandeaux
  • Test, dédié aux… tests
  • Unitest Scribunto, pour lister des tables (mw, frame, args...), documenter les tests… La doc est incluse en entête du module (ou directement sur la page de doc associée : Module:Unitest Scribunto/Documentation).
  • 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 pages de l'espace Module.

RessourcesModifier

ParticipantsModifier

Voir aussiModifier