Salut,
à l’usage, le fait de devoir faire
[(#SET{toto,[(#BALISE|calculs…|filtres…)]})]
est parfois un peu lourdingue, à cause notamment des tas de crochets qu’il faut saisir, et j’ajouterais bien à SPIP la possibilité de coder la même chose sous la forme d’un filtre final :
[(#BALISE|calculs…|filtres…|set{toto})]
Le code est simple, mais ce n’est pas juste un filtre qu’on peut installer dans mes_fonctions.php ; en effet, ça demande une exception dans public/references.php (ligne 447 du plugin itérateurs, par exemple) :
// le filtre |set a besoin d’acceder a la $Pile
// proto: filtre_set($val, &$Pile, $args…)
elseif (in_array($fonc, array(‘set’))
AND $f = chercher_filtre($fonc)) {
$code = “$f($code,$Pile$arglist)”;
}
J’ai mis l’exception sous forme d’un in_array() histoire de pouvoir facilement l’étendre, si besoin.
Votre avis, sur la fonctionnalité ou le code/prototype de la fonction ?
Par ailleurs je me demande si |set{} doit vider le résultat ou non, ou encore le vider par défaut et avoir une option/une variante pour continuer à afficher le résultat.
PS: Si vous voulez tester, outre le patch ci-dessus, le code suivant est à ajouter dans mes_fonctions.php
function filtre_set($val, &$Pile, $key) {
$Pile[‘vars’][$key] = $val;
return ‘’; # vider le résultat
}
– Fil
