Sujet sur Discussion utilisateur:Eru

Lofhi (discutercontributions)
Lofhi (discutercontributions)

Enfin je dis qu'il y avait un problème dans ta modification, mais ma modification n'était peut-être pas la plus propre en 2019 sur le module d'infobox.

Eru (discutercontributions)

Merci, on avait essayer de bien tout tester mais je ne connaissait pas cette usage.

Je vais modifier les bac à sables pour trouvé de quand date l'erreur (23 mars ou avant)

Lofhi (discutercontributions)

Y a pô de soucis !

Eru (discutercontributions)

Je ne suis pas sûr de comprendre pourquoi cela faisait une erreur, mais tester le paramètre pour ne pas affecter un nil semble la résoudre : diff

J'ai fait une page de test ici : Utilisateur:Eru/Brouillon/Test1

Lofhi (discutercontributions)

Quand on tente d'accéder à un index 'print(pouet.unTruc)) d'une chaîne de caractères (pouet = "hello"), Lua retourne nil. Par contre, quand on tente de définir une valeur pour un index (pouet.unTruc = "truc") quand la variable est une chaîne de caractères, Lua nous retourne une erreur. Je pense qu'il faudrait directement s'assurer du type de args.

Eru (discutercontributions)

D'accord je comprends mieux, le bon test est donc type( args ) == 'table'. J'ai tout de même laissé les deux tests : diff

J'ai vérifié sur Modèle:Date de décès/Test, je n'ai pas remarqué d'effet de bord.

Lofhi (discutercontributions)

Oui, pas de soucis comme j'ai dit, c'est sûrement de ma faute !

Od1n (discutercontributions)

Bonjour, j'ai vu passer la modif et j'ai quelques observations :

  • args n'est pas censé être autre chose qu'une table, car dans le local args = Outils.extractArgs( frame ) plus haut, extractArgs() n'est pas censé recevoir autre chose qu'une frame ou une table, s'il retourne autre chose qu'une table, c'est que frame n'était pas une table ou une frame. Voir notamment cette modif dans le module Outils.
  • le args.dateNaissanceMort = params.dateNaissanceMort me gêne, car le principe est normalement de fabriquer une table params, à partir de l'input args. Or là c'est une assignation dans l'autre sens.
Lofhi (discutercontributions)
Od1n (discutercontributions)

Je trouve l'approche actuelle assez bazardesque, par exemple :

  • la ligne ajoutée elseif type( arg1 ) == 'string' and type( arg2 ) == 'string' and arg3 ~= nil and arg4 == nil and ( arg1:match( '[^ ./-][ ./-]+[^ ./-]' ) or dataLiens[arg3] or mw.ustring.match( arg3, '%a %a' ) ) then est quand même assez monstrueuse
  • avec le params.dateNaissanceMort = trim( arg2 ) \n params.qualificatif = trim( arg2 ), forcément l'un des deux est erroné
  • une partie de la gestion des paramètres se fait encore dans {{Date de décès}}
  • complexification de la méthode modeleDate(), qui s'en passerait bien

Du coup, j'ai esquissé une autre approche : Module:Utilisateur:Od1n/DateDeDécès (attention, ce n'est rien d'autre qu'un brouillon)

avantages :

  • support de vraiment toutes les syntaxes
  • mieux isolé du code de modeleDate(), pour moins alourdir celui-ci

inconvénients :

  • code assurément encore très perfectible
  • performances pas optimales, avec grande redondance de parsages/vérifications/découpages/recollages/redécoupages des dates…
Eru (discutercontributions)

Merci pour les précisions, je suis d'accord pour args.dateNaissanceMort = params.dateNaissanceMort, je n'aurai pas dû faire comme cela.

  • Pour la ligne ajoutée je suis assez d'accord, mais j'ai essayé de rester au plus près de ce qui existait juste au-dessus.
  • Parfois le 2ème argument est la date de décès, parfois c'est le qualificatif...
  • Malheureusement oui, j'ai essayé de minimiser les modifications tout en gardant l'usage actuel compatible.
  • Affectivement partir sur une nouvelle fonction simplifierai le tout, je n'avais pas pensé à cela.

Je regarderai le fonctionnement du nouveau module ce week-end, pour voir s'il peut être encore amélioré


Od1n (discutercontributions)

Rappel pendant que j'y repense, une fois le code du module arrangé, le modèle {{Date de décès-}} serait à mettre aussi à niveau, pour des raisons d'harmonisation codebase et syntaxes.

Eru (discutercontributions)

Pour simplifier les choses je pense que l'on pourrait entièrement ce passé de fun.modeleDate et appeler directement fun._modeleDate depuis fun.modeleDateDeDeces.

Au moins il n'y aurait pas à assurer la compatibilité avec les autres fonctions l'appelant, seulement avec {{Date de décès}} (et {{Date de décès-}}).

Od1n (discutercontributions)
Eru (discutercontributions)

Merci, je n'avais pas pris le temps de regarder plus que cela, et je me demandais comment tu l'avais tester :)

Eru (discutercontributions)
Od1n (discutercontributions)

Personnellement, je serais d'avis de ne pas supporter ces syntaxes 19 à 25 (mélange syntaxes dates "1 paramètre" et "3|paramètres|s"). Le code est déjà assez complexe pour supporter toutes les syntaxes précédentes (c'est déjà un miracle de pouvoir faire un code sachant différencier, relativement sans trop d'ambiguïtés à gérer, toutes ces syntaxes possibles).

Et je ne suis pas sûr qu'il soit bon d'inciter l'utilisateur à employer l'une de ces syntaxes…

Petite hésitation concernant la syntaxe 22 (pas de mélange syntaxes dates, mais qualificatif intercalé). Pour celle-ci, peut-être, mais à conditions de supporter aussi la syntaxe {{Date de décès|24|2|1993|en sport|23|6|1920}} et que le code ne soit pas beaucoup complexifié.

Eru (discutercontributions)

Je suis plutôt d'accord, c'est d’ailleurs pour ça que j'ai laissé la croix, avant elle ne fonctionnait que partiellement, le qualificatif était ignoré.

Mais là elle provoquait une erreur, il faudrait donc vérifier qu'aucun article ne les utilisent.

Je vais voir si j'arrive à faire des recherches les détectant.

J'ai ajouté le test 22b (qui ne fonctionne pas pour l'instant) pour {{Date de décès|24|2|1993|en sport|23|6|1920}}

Eru (discutercontributions)
Eru (discutercontributions)
Eru (discutercontributions)

Bonjour Od1n et Lofhi , cela fait un mois, peut-on appliquer les modifications ?

Od1n (discutercontributions)

Contre pour ma part. Pour avoir écrit ce code, je sais à quel point il est sale. Comme indiqué précédemment, ce n'est rien d'autre qu'un essai, pour voir dans quelle mesure l'approche serait envisageable. Mais en l'état actuel, on ne peut pas passer un truc pareil en production.

Eru (discutercontributions)

Ok, je réfléchirai comment faire autrement quand j'aurais un moment.

Od1n (discutercontributions)

L'approche ne me semble pas mauvaise, mais dans quelques "branches" de ce module, il y a de la redondance dans l'interfaçage avec le module Date (en gros, la date est découpée, recollée, re-découpée…). En plus d'être peu performant, c'est un signe manifeste que le code aurait matière à être amélioré. De mémoire, c'est surtout dans le module Date qu'il y avait des changements à réaliser (et pas forcément simples), pour avoir quelque chose de plus "modulaire".

Eru (discutercontributions)

Effectivement, je regarderai pour appeler directement _modeleDate sans passer par modeleDate, cela évitera pas mal de redécoupage.

Répondre à « Dernière modification de Module:Date »