Aide:Lua

De Inkipédia

Créer des modules Lua au lieu de modèles est une manière plus performante et souvent plus lisible de transclure du texte. Les modules Lua peuvent être utilisés pour traiter des logiques complexes, interagir avec l'API de MediaWiki, et gérer plus efficacement des tâches difficiles ou impossibles à réaliser avec le wikitexte standard.

Ce guide vous aidera à démarrer avec la création de modules Lua, en particulier pour traduire des modèles wikitexte en modules Scribunto Lua.

Comprendre Lua et Scribunto

Lua est un langage de programmation conçu pour « étendre » les applications. Scribunto est une extension pour MediaWiki qui permet d'exécuter ou d'intégrer des scripts Lua dans les pages wiki. Le code Lua dans MediaWiki est organisé en « modules », qui sont des pages dans l'espace de noms Module, tout comme les « modèles » wikitexte sont des pages dans l'espace de noms Modèle.

Créer des modules Lua

1. Apprendre la syntaxe de base de Lua : Familiarisez-vous avec les concepts de base de la programmation et la syntaxe de Lua. Nous avons un guide de référence pour cela.

2. Commencez avec un nouveau module :

  • Créez une nouvelle page dans l'espace de noms Module. Par exemple, Module:MonModule.
  • Commencez le module avec une structure Lua de base :
local p = {}

-- Logique du module qui attend tous les arguments
function p.doTheThing(arg)
    return "Hello world: " .. tostring(arg)
end

-- La fonction principale qui extrait les arguments d frame de MediaWiki
function p.main(frame)
    local args = frame:getParent().args
    local firstArg = args['name'] or args[1]
    return p.doTheThing(firstArg)
end

return p

Dans l'exemple ci-dessus, deux fonctions sont créées. Une qui est censée être appelée depuis MediaWiki en utilisant {{#invoke:MonModule|main}}. L'autre fait la logique "réelle" que d'autres modules et tests peuvent utiliser (par exemple {{#invoke:MonModule|doTheThing|test}}).

3. Si vous traduisez un modèle existant en module :

  • Lisez et comprenez complètement le modèle.
  • Assurez-vous que la documentation du modèle est à jour, y compris les arguments cachés qui n'ont pas été ajoutés à la documentation.
  • Mettez à jour la documentation pour inclure les tests de tous les arguments dans le modèle.
  • Déplacez la documentation vers Module:MonModule/doc si nécessaire.
  • Traduisez le code en Lua. Vous pouvez consulter le guide de référence.
  • Sur le modèle existant, remplacez le code en invoquant votre module, par exemple {{#invoke:MonModule|main}}. L'aperçu confirmera si le code est correct ou non. Pour les grands changements, vous pouvez créer un modèle différent pour les tests au lieu de remplacer celui existant.

4. Si vous créez un module entièrement nouveau :

  • Créez la documentation pour le module sous Module:MonModule/doc si nécessaire. Incluez les tests de tous les arguments.
  • Créez un nouveau modèle qui invoque le module, par exemple {{#invoke:MonModule|main}}.

5. Continuez à modifier le module et la documentation selon les besoins.

Conseils pour traduire le wikitexte en Lua

  • Variables et paramètres : Une fois que les args ont été extraits du frame, vous pouvez accéder à chacun en utilisant args[1], args[2]... pour les args {{{1}}} et {{{2}}}. Pour les paramètres nommés, args prend également en charge les chaînes de caractères, par exemple args['name'] or "default" pour {{{name|default}}}.
  • Instructions conditionnelles : Traduisez les conditionnels wikitexte comme #if, #switch en instructions if-then-else et elseif de Lua.
  • Manipulation de chaînes de caractères : Utilisez les fonctions de chaîne de Lua (string.lower, string.match, etc.) pour manipuler le texte, qui sont plus puissantes que les fonctions de chaîne du wikitexte.
  • Boucles : Pour les tâches répétitives, utilisez les boucles de Lua (for, while) au lieu du code répétitif du wikitexte.
  • Commentez votre code : Utilisez des commentaires (-- commentaire) pour expliquer les parties complexes du script, ce qui facilite la compréhension et la maintenance pour les autres.
  • 'Interaction avec l'API MediaWiki : De nombreuses fonctions sont déjà écrites pour vous dans la bibliothèque mw, telles que l'accès à d'autres pages, l'analyse du wikitexte, ou la récupération d'informations sur le site. Voir le manuel de référence Lua.

Ressources pour apprendre Lua et Scribunto