Discussion modèle:Indexation/Bug MW 1.13

De Oniropædia

Bonjour les copains,

Vous n'avez peut-être pas remarqué, mais j'ai mis à jour MediaWiki vers la dernière version, la 1.13.2, et je me rends compte d'un bogue qui est peut-être lié : lorsqu'une page est nouvellement indexée, elle prend l'index {, même si on spécifie le paramètre index=. Voir pour exemple l'indexation de Oniropædia:Bac à sable dans la catégorie Catégorie:Oniropædia.

Est-ce que l'un des créateurs de ce modèle pourrait jeter un œil au code pour voir d'où ça pourrait venir ? Sinon je le ferai, mais j'ai peur de perdre pas mal de temps à essayer de comprendre le modèle avant de pouvoir agir pour corriger le problème.

Merci d'avance.

--Xiloynaha 2 novembre 2008 à 22:37 (UTC)


en transformant le code d'indexation comme suis :

{{indexation|

index=a|

{{SITENAME}}

}}

au lieu de {{indexation|index=a|{{SITENAME}}}}

j'obtient ceci :

[[Catégorie: Oniropædia

|

{{Expansion depth limit exceeded}}

]]

--Narcian le Grand Rêvant 3 novembre 2008 à 10:53 (UTC)


Schématiquement l'appel au modèle {{indexation}} consomme 1 niveau d'expansion.

le modèle {{indexation}} peut se résumer comme étant l'appel imbriqué de :

  1. la fonction #ifeq
  2. la fonction #if
  3. le modèle Désaccentuation
  4. le modèle {{Catégorisation/Catégorisation/Module de base/Indexation dans catégorie/Configuration}}

ce qui consomme 4 niveaux d'expension.

le modèle Désaccentuation contient 37 appels à la fonction #replace, puis 1 appel à la fonction lc ce qui consomme 38 niveaux d'expension.

le modèle {{Catégorisation/Catégorisation/Module de base/Indexation dans catégorie/Configuration}} peut se résumer comme étant l'appel imbriqué de :

  1. la fonction #ifeq
  2. la fonction #switch
  3. une des fonctions PAGENAME/SUBPAGENAME/SITENAME/FULLPAGENAME

ce qui consomme 3 niveaux d'expension.

De manière très simpliste, et très minimaliste, j'abouti à un total de 46 niveaux d'expension.

Question : combien de niveaux d'expensions sont autorisés par la version "1.13.2" ?

--Narcian le Grand Rêvant 3 novembre 2008 à 11:22 (UTC)


Bien vu Narcian !

Un nouveau paramètre dans la config limite le nombre d'appels à 40. Je l'ai passé à 49, et ça semble marcher, sauf pour l'utilisation du paramètre index= (cf. toujours le même exemple, j'ai essayé d'indexer le bac à sable sous "sable", il reste à la place qu'il occupait avant, à savoir "bac à sable").

En faisant le même test que toi, j'obtiens ça (quel que soit le mot après index=) :

[[Catégorie: Oniropædia

|bac a sable]]

C'est-à-dire le code d'indexation « normal » si on omet l'index… Vois-tu d'où ça peut venir ?

Question subsidiaire : la complexité de ce modèle est vraiment énorme ; n'y a-t-il pas moyen de la réduire ?

--Xiloynaha 3 novembre 2008 à 13:31 (UTC)


Ho que oui; puisque c'est la règle pour les pages méta voir Discussion Modèle:Catégorisation/Catégorisation/Module de base/Indexation dans catégorie/Configuration #Règles d'indexation des catégories.

Quand à la complexité du modèle, il est du au fait il implémente de façon automatique plusieurs règles différentes.

On peut simplifier le modèle, mais alors le travail de maintenance peut devenir monstrueux s'il faut repasser sur l'indexation de chaque page. --Narcian le Grand Rêvant 3 novembre 2008 à 15:06 (UTC)


Le problème, c'est que le comportement est le même pour une page de l'espace (Main) indexée dans une catégorie quelconque. Regarde la page Test et la Catégorie:Test (je ne fais pas de liens ici pour éviter de polluer la page des pages les plus demandées avec des pages inexistantes).

Au sujet de la complexité du modèle, je sais bien qu'il fait beaucoup de choses, j'entendais par là : n'est-il pas possible de réduire la complexité du modèle en gardant ses fonctionnalités ? Je suppose que non…

--Xiloynaha 3 novembre 2008 à 15:52 (UTC)


La règle est que l'indexation est automatiquement forcée par le modèle sauf dans les deux cas suivants :

  1. indexation dans une catégorie de scénario où il y a obligation de renseigner le paramètre index sinon pas d'indexation
  2. indexation d'une page d'aide, où l'on prend en compte le paramètre index s'il est renseigné, et où l'on applique une indexation forcée si le paramètre index n'est pas renseigné.

Les règles d'indexations n'ont pas à proprement parlé étées débattue, je les aie plus où moins déduites de ce qui ce faisait manuellement avant le recours à des modèles d'indexation.

Visiblement cela te pose problème; cela n'est d'ailleurs pas nouveau puisque JaI avait le même genre de problème avec le traitement des catégories de scénarios.

Je ne suis toutefois pas a cheval sur ces règles; ont peut les changer; et si ont trouve le modèle trop complexe pour le faire par soit même, il suffit de le demander sur l'une des pages suivantes :

  1. {{indexation}}
  2. {{Catégorisation/Catégorisation/Module de base/Indexation dans catégorie/Configuration}} (page la plus appropriée)
  3. Oniropædia:Requête aux administrateurs

Comme je consulte régulièrement la liste des dernières pages modifiées, je satisferait moi-même à la demande dès que je la verrai.

Comme tu le suppose bien, on ne peut pas à la fois réduire la complexité et garder ses fonctionnalités. On peut toutefois réduire le nombre de niveau d'expansion (de pas beaucoup toutefois), mais cela alourdira la maintenance du modèle, ainsi que sa complexité. De plus, c'est le modèle Désaccentuation qui est le plus consommateur, et celui-ci est extremement simple; on peut gagner en niveau d'expansion mais en réduisant le volant de caractères désaccentués; ce volant étant déjà fonctionnellement pas mal réduit. Ce qu'il nous faudrait, c'est une fonction média-wiki qui fasse la même chose; on gagnerait alors 37 niveaux d'expansion.

--Narcian le Grand Rêvant 3 novembre 2008 à 16:23 (UTC)


Non non non, je ne veux rien changer du tout ! J'ai dû mal lire la page d'aide de la configuration, je n'avais pas compris que le paramètre index n'était pris en compte que dans certains cas, donc je croyais qu'il y avait un problème. Ça me va comme ça.

Pour la désaccentuation, à la réflexion ça me semble largement faisable en codant une extension dédiée. Effectivement ce serait largement plus efficace. Maintenant que j'ai mis les mains dans le code des LoopFunctions, je suppose que je pourrais attaquer ça. Je vais essayer (d'y penser, déjà).

--Xiloynaha 3 novembre 2008 à 16:40 (UTC)


Voilà, c'est fait : l'extension « Accents2ASCII » est née ! Comme quoi quand on se motive, on avance :-)

Elle fournit les trois fonctions suivantes :

  • #accents2ascii, qui convertit simplement la chaîne afin d'enlever les accents ;
  • #accents2ascii2lower, qui fait la même chose mais en mettant la chaîne en minuscules, et reproduit donc le comportement du modèle désaccentuation ;
  • #accents2ascii2upper, qui fait la même chose mais en mettant la chaîne en majuscules.

Prière donc d'utiliser dorénavant la fonction {{#accents2ascii2lower: texte à convertir}} en lieu et place du modèle désaccentuation. À noter que cette extension supporte plus de caractères que le modèle précédemment utilisé.

--Xiloynaha 3 novembre 2008 à 23:37 (UTC)

P.S. : le même tableau que sur la page d'aide de désaccentuation, mais avec des appels à #accents2ascii :

Table de conversion
Caractère initial accents2ascii accents2ascii2lower accents2ascii2upper
A A a A
B B b B
C C c C
D D d D
E E e E
F F f F
G G g G
H H h H
I I i I
J J j J
K K k K
L L l L
M M m M
N N n N
O O o O
P P p P
Q Q q Q
R R r R
S S s S
T T t T
U U u U
V V v V
W W w W
X X x X
Y Y y Y
Z Z z Z
a a a A
b b b B
c c c C
d d d D
e e e E
f f f F
g g g G
h h h H
i i i I
j j j J
k k k K
l l l L
m m m M
n n n N
o o o O
p p p P
q q q Q
r r r R
s s s S
t t t T
u u u U
v v v V
w w w W
x x x X
y y y Y
z z z Z
À A a A
Á A a A
 A a A
à A a A
Ä A a A
Å A a A
Æ Ae ae AE
Ç C c C
È E e E
É E e E
Ê E e E
Ë E e E
Ì I i I
Í I i I
Î I i I
Ï I i I
Ò O o O
Ó O o O
Ô O o O
Õ O o O
Ö O o O
Ù U u U
Ú U u U
Û U u U
Ü U u U
Ý Y y Y
à a a A
á a a A
â a a A
ã a a A
ä a a A
å a a A
æ ae ae AE
ç c c C
è e e E
é e e E
ê e e E
ë e e E
ì i i I
í i i I
î i i I
ï i i I
ò o o O
ó o o O
ô o o O
õ o o O
ö o o O
ù u u U
ú u u U
û u u U
ü u u U
ý y y Y
ÿ y y Y
Ĩ I i I
ĩ i i I
İ I i I
IJ IJ ij IJ
ij ij ij IJ
ΠOe oe OE
œ oe oe OE
Ũ U u U
ũ u u U
Ů U u U
ů u u U
Ŷ Y y Y
ŷ y y Y
Ÿ Y y Y
Ǽ Ae ae AE
ǽ ae ae AE
E e E
e e E
Y y Y
y y Y
Y y Y
y y Y