Projet:Fondations/Alternative aux ParserFunctions

De Poképédia
Aller à la navigation Aller à la recherche
Cette page s'inscrit dans le cadre du projet Fondations

Avancement du projet (estimation)

 100%


Les ParserFunctions sont des ajouts particuliers à la syntaxe wiki. Elles permettent entre autres de faire des tests et de produire une sortie différente selon le résultat.

{{#ifeq: texte1 | texte2 | résultat si identiques | résultat si différents }}

Dans cet exemple, si texte1 et texte2 sont identiques, alors « résultat si identiques » est écrit. Dans le cas contraire, « résultat si différents » est renvoyé. Plusieurs fonctions sont disponibles et elles sont surtout utiles dans le cadre des modèles. Elles se calquent sur des fonctions habituelles des langages de programmation.

Elles ont néanmoins quelques limitations. Par exemple, il est impossible de faire des boucles (« tant qu'il y a des attaques Pokémon, créer une ligne de tableau pour chacune ») ou d'utiliser des variables sauf à installer de nouvelles extensions qui en étendront les possibilités.

L'utilisation de ces fonctions pose également un souci au niveau de la lisibilité du code. Les modèles sont vite surchargés et les modifier est rarement agréable (comme dans le cas des infoboxes). Elles sont également assez peu performantes de l'aveu même de leurs auteurs : « the ugliest, most inefficient programming language known to man ».

C'est pourquoi deux extensions vont être testées. Aucune des deux ne semble être le Saint Graal à première vue mais elles apportent toutes deux des réponses aux problèmes créés par les ParserFunctions :

  • La première est Lua, du nom du langage de programmation puisque c'est sur celui-ci qu'elle est basée. Elle propose donc une syntaxe classique et un lot de fonctions bien plus important que ce qu'on a actuellement. En revanche elle est peut-être un peu difficile d'accès et pas forcément plus pratique pour les infoboxes.
  • La seconde est Winter et elle ressemble énormément aux ParserFunctions au niveau de la syntaxe. Elle est plus complète et fournit notamment la possibilité de faire des boucles. Elle est peut-être un peu moins accessible de ce fait et la lisibilité n'est pas forcément meilleure qu'avec les ParserFunctions.

Les deux seront installées et quelques tests seront effectués afin de les jauger.

Récapitulatif des tâches[modifier]

  • Installer l'extension Lua
  • Installer l'extension Winter
  • Transformer un modèle type de chaque catégorie pour utiliser Lua au lieu des ParserFunctions
  • Transformer un modèle type de chaque catégorie pour utiliser Winter au lieu des ParserFunctions
  • Faire une liste des avantages et des inconvénients de l'extension Lua (efficacité, lisibilité, facilité d'apprentissage et d'utilisation, etc.)
  • Faire une liste des avantages et des inconvénients de l'extension Winter (idem)
  • Choisir quelle extension (ParserFunctions, Lua ou Winter) conserver

Le futur[modifier]

Finalement, Wikimedia/MediaWiki s'est mis à travailler sur une alternative avec Scribunto, maintenant installée sur Poképédia. Ce n'est pas une solution parfaite (il faut passer par l'espace de nom Module:, on ne peut pas avoir un retour en wikitexte puisqu'il ne sera pas transformé...) mais c'est le futur, car c'est officiellement développé par Wikimedia. C'est donc la meilleure voie.