Valider e2a28b6b rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Reordonner les boucles dans la pile pour que la compilation se fasse dans le...

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>
```
parent 83c0ed84
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+5 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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)