[spip-dev] Re : boucles imbriquées et table absente -> OUPS!!!

argh! le message est parti alors que j'étais en cours de modif...
ne tenez pas compte du précédent...

En imbriquant une boucle dans une boucle CONDITION de spip-bonux
<BOUCLE_test_sl(CONDITION){#PLUGIN{spiplistes}|oui}>
  toto est ici
  <BOUCLE_nb_listes(LISTES){statut != inact}{0,1}>
     titi est là
  </BOUCLE_nb_listes>
</BOUCLE_test_sl>

Avec le plugin spiplistes désactivé (donc la condition fausse) je constate les résultats suivants:
- "toto est ici" n'est pas affiché => ce qui est le résultat attendu
- le contenu de la 2ème boucle n'est pas affiché non plus => idem ça semble normal
- en revanche le message "Unknown SQL table "listes" apparait ce qui est inattendu puisque la 2ème boucle ne devrait pas être lancée...

et l'erreur n'est pas liée au test #PLUGIN{spiplistes}|oui puisque j'obtiens exactement la même erreur avec :
<BOUCLE_test_sl(CONDITION){si 0}>

du coup cela signifierait que même si la boucle englobante est vide, la boucle incluse est quand même évaluée par le compilo qui renvoie alors l'erreur...
de la même manière, si à la place d'utilise une boucle CONDITION de bonux j'utilise une "classique" boucle feinte (cf http://www.weblog.eliaz.fr/article62.html) le résultat est exactement le même

Alors:
- c'est normal et il faut passer par un #INCLURE qui contient la boucle sur la table absente?
- ou j'oublie quelque chose?
- ou c'est une amélioration possible/souhaitable et il y a un ticket à ouvrir?

En imbriquant une boucle dans une boucle CONDITION de spip-bonux
<BOUCLE_test_sl(CONDITION){#PLUGIN{spiplistes}|oui}>
toto est ici
<BOUCLE_nb_listes(LISTES){statut != inact}{0,1}>
    titi est là
</BOUCLE_nb_listes>
</BOUCLE_test_sl>

le message "Unknown SQL table "listes" apparait

du coup cela signifierait que même si la boucle englobante est vide, la boucle incluse est quand même évaluée par le compilo

Un compilateur n'évalue rien: il produit du code pour toutes les situations possibles lors des évaluations ultérieures.
On pourrait l'écrire de telle sorte qu'il ne fasse pas d'erreur dans ce cas là, mais ce serait au prix d'une grosse perte de performances, parce qu'il serait obligé d'analyser à chaque évaluation la description de la table, au lieu de le faire une fois pour toutes à la compil.

c'est normal et il faut passer par un #INCLURE qui contient la boucle sur la table absente?

exactement.

Committo,Ergo:Sum