[spip-dev] filtres |reset et |end problématiques

bonjour
(toujours pour rédaction/amélioration de la doc...)

pour ce qui est de #ARRAY|reset :

À partir de #SET{tablo, #ARRAY{0,a,1,b,2,c,3,d}},
   [(#GET{tablo}|reset)] affichera « a »,
À partir de #SET{tablo, #ARRAY{1,a,2,b,3,c,0,d}},
   [(#GET{tablo}|reset)] affichera « d »,
À partir de #SET{tablo, #ARRAY{1,a,2,b,3,c,4,d}},
   [(#GET{tablo}|reset)] n’affichera rien.

pour ce qui est de #ARRAY|end :

À partir de #SET{tablo, #ARRAY{0,a,1,b,2,c,3,d}},
   [(#GET{tablo}|end)] affichera « d »,
À partir de #SET{tablo, #ARRAY{1,a,3,b,5,c,8,d}},
   [(#GET{tablo}|end)] affichera « b »
À partir de #SET{tablo, #ARRAY{2,a,4,b,5,c,6,d}},
   [(#GET{tablo}|end)] n’affichera rien.

sauf erreur de ma part, ces 2 filtres —qui sont aujourd'hui
essentiellement utilisés pour le calcul et l'affichage des paginations
(dans le core ou les plugins)— surchargent les fonctions originales
de PHP, mais ne retournent pas toujours ce que l'on pourrait attendre
des originales.

test :

<?php
$truc = array(1=>'a',2=>'b',3=>'c',0=>'d');
echo end($truc) . ' - ' . reset($truc);
// -> d - a
?>
<hr>
#SET{tablo, #ARRAY{1,a,2,b,3,c,0,d}}
[(#GET{tablo}|end)] - [(#GET{tablo}|reset)]
[(#REM) -> c - d]

<?php
$truc = array(1=>'a',3=>'b',5=>'c',8=>'d');
echo end($truc) . ' - ' . reset($truc);
// -> d - a
?>
<hr>
#SET{tablo, #ARRAY{1,a,3,b,5,c,8,d}}
[(#GET{tablo}|end)] - [(#GET{tablo}|reset)]
[(#REM) -> b - ]

oui tu as raison, le code des filtres ne va pas du tout.
Pourquoi cela n'utilise-t-il pas reset et end ?

Cédric

cedric.morin@yterium.com a écrit :

Pourquoi cela n'utilise-t-il pas reset et end ?

ils posaient un problème avec #ENV :
   http://trac.rezo.net/trac/spip/changeset/10129

oui, oui, reset et end ne peuvent être utilisés que sur un array, par sur une expression.
Mais une fois dans le filtre, il ne me semble pas qu'utiliser les reset et end aurait posé des problèmes, au contraire de la lecture par clé numérique qui n'est pas du tout équivalente.

Cédric