Le compilateur mange les ancres #Map #1964

Closed
opened 13 years ago by goldstein · 13 comments
Owner

Il est anormal que le compilateur mange #M dans une ancre #Map. Ce cas devrait être préservé.

Si il s'agit vraiment d'une balise #M suivie de 'ap' cela peut s'ecrire [(#M)]ap alors que une ancre #Map ne peut s'ecrire autrement. Forcer le renommage des ancres est intrusif et pas toujours possible quand son nom est lié à une librairie javacscript ou un autre composant externe. Le bug existe visiblement depuis toujours.

Il est anormal que le compilateur mange #M dans une ancre #Map. Ce cas devrait être préservé. Si il s'agit vraiment d'une balise #M suivie de 'ap' cela peut s'ecrire [(#M)]ap alors que une ancre #Map ne peut s'ecrire autrement. Forcer le renommage des ancres est intrusif et pas toujours possible quand son nom est lié à une librairie javacscript ou un autre composant externe. Le bug existe visiblement depuis toujours.
Owner

Version cible mise à 3.0

**Version cible mise à 3.0**
Owner

Version cible mise à 3.1

**Version cible mise à 3.1**
Owner

En attendant, on écrira par exemple : usemap="#[(#REM)]Map"

En attendant, on écrira par exemple : `usemap="#[(#REM)]Map"`
Owner

une possibilité consisterait à corriger dans ecrire/public/phraser_html.php :
define('NOM_DE_CHAMP', "#((" . NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)(\*{0,2})");
par :
define('NOM_DE_CHAMP', "#((" . NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)+(?![a-z])+(\*{0,2})");
(ajout de l' assertion avant négative )
mais casserait tous les squelettes utilisant #TRUCabcd qui devraient donc être réécrits [(#TRUC)abcd] (pas jouable donc !)

une autre solution serait d'interdire les #BALISE d'une seule lettre avec :
define('NOM_DE_CHAMP', "#((" . NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)+{2,}+(\*{0,2})");
(ajout de au moins 2 caractères )
mais casserait toutes les balises de un caractère (cas d'une variable d'url : &a=machin&b=bidule)...

une possibilité consisterait à corriger dans `ecrire/public/phraser_html.php` : `define('NOM_DE_CHAMP', "#((" . NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)(\*{0,2})");` par : `define('NOM_DE_CHAMP', "#((" . NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)`+*`(?![a-z])`*+`(\*{0,2})");` (ajout de l' _assertion avant négative_ ) *mais* casserait tous les squelettes utilisant `#TRUCabcd` qui devraient donc être réécrits `[(#TRUC)abcd]` (pas jouable donc !) une autre solution serait d'interdire les #BALISE d'une seule lettre avec : `define('NOM_DE_CHAMP', "#((" . NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)`+*`{2,}`*+`(\*{0,2})");` (ajout de _au moins 2 caractères_ ) *mais* casserait toutes les balises de *un* caractère (cas d'une variable d'url : `&a=machin&b=bidule`)...
Owner

je crois que casser #TRUCabcd et forcer à l'écrire [(#TRUC)abcd] est un moindre mal car assez rare. C'est la seule façon propre de remettre la syntaxe d'equerre et corriger ce bug.
On peut peut-être compter les occurences d'une telle construction sur la zone pour avoir une idée de la gravité ?
En tout cas c'est le moment de faire ça dans une 3.x

je crois que casser `#TRUCabcd` et forcer à l'écrire [(#TRUC)abcd] est un moindre mal car assez rare. C'est la seule façon propre de remettre la syntaxe d'equerre et corriger ce bug. On peut peut-être compter les occurences d'une telle construction sur la zone pour avoir une idée de la gravité ? En tout cas c'est le moment de faire ça dans une 3.x
Owner

je n'ai grep que le core, les plugins-dist les plugins de la zone et les squelettes de la zone.

j'ai 1 retour sur 1 squelette de la zone :

j'ai 10 retours sur 5 plugins de la zone :

je n'ai grep que le core, les plugins-dist les plugins de la zone et les squelettes de la zone. j'ai 1 retour sur 1 squelette de la zone : - http://zone.spip.org/trac/spip-zone/browser/_squelettes_/median/modeles/encercler.html#L21 j'ai 10 retours sur 5 plugins de la zone : - http://zone.spip.org/trac/spip-zone/browser/_plugins_/coordonnees/trunk/prive/squelettes/contenu/coordonnees_fiche_objet.html#L32 - http://zone.spip.org/trac/spip-zone/browser/_plugins_/fabrique/branches/v1/fabrique/prefixe_pipelines.php.html#L39 - http://zone.spip.org/trac/spip-zone/browser/_plugins_/fabrique/trunk/fabrique/prefixe_pipelines.php.html#L39 - http://zone.spip.org/trac/spip-zone/browser/_plugins_/iterateurs-demos/trunk/demo/iterateurs.html#L21 - http://zone.spip.org/trac/spip-zone/browser/_plugins_/simple_calendrier/branches/v1/prive/contenu/evenement.html#L23 - http://zone.spip.org/trac/spip-zone/browser/_plugins_/simple_calendrier/branches/v1/prive/contenu/evenement.html#L24 - http://zone.spip.org/trac/spip-zone/browser/_plugins_/spip-plans/css_plan.html#L75 - http://zone.spip.org/trac/spip-zone/browser/_plugins_/spip-plans/css_plan.html#L76 - http://zone.spip.org/trac/spip-zone/browser/_plugins_/spip-plans/css_plan_prive.html#L77 - http://zone.spip.org/trac/spip-zone/browser/_plugins_/spip-plans/css_plan_prive.html#L78
Owner

ça reste modeste, du coup c'est jouable sur le passage à 3.1 de changer cette interpretation.
Au passage je me demande si
define('NOM_DE_CHAMP', "#((" . NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)\b(\*{0,2})");
ne serait pas encore plus simple et propre

ça reste modeste, du coup c'est jouable sur le passage à 3.1 de changer cette interpretation. Au passage je me demande si `define('NOM_DE_CHAMP', "#((" . NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)\b(\*{0,2})");` ne serait pas encore plus simple et propre
Owner

Ce que je ne comprends pas c'est qu'à l'époque (reculée) il fallait au moins trois caractères majuscules pour que ça forme une balise. Justement parce qu'il y avait des #Map partout

Ce que je ne comprends pas c'est qu'à l'époque (reculée) il fallait au moins trois caractères majuscules pour que ça forme une balise. Justement parce qu'il y avait des #Map partout
Owner

oui oui :

[A-Z_]+)\b
est beaucoup plus mieux bien.
ça évite de matcher
#BAlise, #B_alise, #BA_lise

oui oui :<pre>[A-Z_]+)\b</pre> est beaucoup plus mieux bien. ça évite de matcher <pre>#BAlise, #B_alise, #BA_lise</pre>
Owner

ah la limite de 3 caractères mini a du disparaitre un jour car je n'en ai pas trouvé trace

ah la limite de 3 caractères mini a du disparaitre un jour car je n'en ai pas trouvé trace
Owner

Statut changé à Fermé

**Statut changé à Fermé**
Owner

on reporte en 3.0 ou pas ?
si oui, on corrige les 11 utilisations de [(#BALISEaddendum)] sur la zone ?

on reporte en 3.0 ou pas ? si oui, on corrige les 11 utilisations de [(#BALISEaddendum)] sur la zone ?
Owner

Je pense pas non, à mon avis c'est un changement à garder pour la future 3.1.

Je pense pas non, à mon avis c'est un changement à garder pour la future 3.1.
Sign in to join this conversation.
No Milestone
No project
No Assignees
6 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.