Quand je veux créer un critère {xxxx a,b,c}, le phraseur_html me crée la structure suivante :
op => xxxx
param => (
Texte ( “a” ),
Texte ( “b” ),
Texte ( “c” ),
)
Si je remplace a par 1, à cause de la détection un peu élémentaire des critères {1,2} et {n-1,1} (cf. http://core.spip.org/trac/spip/changeset/4605 ), il me produisait :
op => “xxxx 1”
param => (
Texte ( “b” ),
Texte ( “c” ),
)
j’ai tenté de corriger ça en affinant la détection du cas http://core.spip.org/trac/spip/changeset/16827 ; ça semble fonctionner.
Maintenant je suis confronté au problème suivant :
{xxxx a,“b”}
me donne bien
op => “xxxx”
param => (
Texte ( “a” ),
Texte ( “b” ),
)
mais
{xxxx “a”,“b”}
me donne
op => “xxxx”
param => (
Texte ( ““a”” ),
Texte ( “b” ),
)
les guillemets autour du “a” ne sont donc pas analysés, contrairement à ceux qui sont autour du “b”. C’est incohérent.
et là j’avoue que j’atteins mes limites en phraseur. Il faut certainement appeler une fonction phraser_xxx(), mais laquelle et comment ?
J’ai fait un truc à l’arrache avec un code très sale, je suis certain que c’est pas la bonne méthode (cf. ligne 466 du phraseur_html) :
// une maniere un peu sale de supprimer les "’ autour de {critere “xxx”,“yyy”}
if (preg_match(’,^"’\1$,’, $m[3])) {
$c = null;
eval (’$c = '.$m[3]);
if (isset($c))
$m[3] = $c;
}
$texte->texte = $m[3];
$v[1][0]= $texte;
– Fil