Browse Source

Reordonner les boucles dans la pile pour que la compilation se fasse dans le bon ordre dans tous les cas :

- la partie milieu d'une boucle d'abord (et donc ses boucles inclues d'abord)
- la boucle elle meme
- puis les boucles presentes dans les parties conditionnelles de la boucle

Permet que le cas suivant ne declenche auune fausse erreur sur les balise #TRI et #PAGINATION
```

<B_1>
    <BOUCLE_2(CONDITION){si 1}>
        [(#_1:TRI{date,Date})]
    </BOUCLE_2>

    <BOUCLE_1(ARTICLES){0,2}{tri #ENV{par,date}}>
        art: #ID_ARTICLE<br />
    </BOUCLE_1>
</B_1>

<BOUCLE_content(RUBRIQUES){id_rubrique=6}>
<B_breves>
<div class="liste breves">
		#ANCRE_PAGINATION
		<h2 class="h2"><:breves:breves:></h2>
		<ul class="liste-items">
				<BOUCLE_breves(BREVES) {id_rubrique} {par date}{inverse} {pagination 5}>
				<li class="item short">#INCLURE{fond=inclure/resume/breve,id_breve}</li>
				</BOUCLE_breves>
		</ul>
		[<div class="pagination">(#PAGINATION)</div>]
</div>
</B_breves>
</BOUCLE_content>
```
master
cedric@yterium.com 2 years ago
parent
commit
e2a28b6baa
  1. 7
      ecrire/public/phraser_html.php

7
ecrire/public/phraser_html.php

@ -904,10 +904,13 @@ function public_phraser_html_dist($texte, $id_parent, &$boucles, $descr, $ligne
}
$descr['id_mere_contexte'] = $id_boucle;
$result->milieu = public_phraser_html_dist($milieu, $id_boucle, $boucles, $descr, $result->ligne + $b);
// reserver la place dans la pile des boucles pour compiler ensuite dans le bon ordre
// ie les boucles qui apparaissent dans les partie conditionnelles doivent etre compilees apres cette boucle
$boucles[$id_boucle] = null;
$result->avant = public_phraser_html_dist($result->avant, $id_parent, $boucles, $descr, $result->ligne);
$result->apres = public_phraser_html_dist($result->apres, $id_parent, $boucles, $descr, $result->ligne + $b + $m);
$result->altern = public_phraser_html_dist($result->altern, $id_parent, $boucles, $descr, $result->ligne + $a + $m + $b);
$result->milieu = public_phraser_html_dist($milieu, $id_boucle, $boucles, $descr, $result->ligne + $b);
// Prevenir le generateur de code que le squelette est faux
if ($err_b) {
@ -917,7 +920,7 @@ function public_phraser_html_dist($texte, $id_parent, &$boucles, $descr, $ligne
// Verifier qu'il n'y a pas double definition
// apres analyse des sous-parties (pas avant).
if (isset($boucles[$id_boucle])) {
if (!empty($boucles[$id_boucle])) {
$err_b_d = array(
'zbug_erreur_boucle_double',
array('id' => $id_boucle)

Loading…
Cancel
Save