diff --git a/inc-admin.php3 b/inc-admin.php3 index 7dcc55bfbaac2e8c7366379b48f6ce2f63f4d720..37a1c76904d0cbc16df4ccd3afdda25fcb709167 100644 --- a/inc-admin.php3 +++ b/inc-admin.php3 @@ -279,7 +279,7 @@ function boucle_debug_resultat ($nom, $resultat) { function boucle_debug_compile ($id, $nom, $pretty, $sourcefile, $code) { global $debug_objets; - $debug_objets['boucles'][$nom.$id] = $code; + $debug_objets['code'][$nom.$id] = $code; $debug_objets['pretty'][$nom.$id] = $pretty; } @@ -291,6 +291,13 @@ function squelette_debug_compile($nom, $sourcefile, $squelette) { $debug_objets['sourcefile'][$nom] = $sourcefile; } +// appelee a chaque parsing de squelette (inc-parser) +function boucle_debug ($id, $nom, $boucle) { + global $debug_objets; + + $debug_objets['boucle'][$nom.$id] = $boucle; +} + // l'environnement graphique du debuggueur function debug_page($no_exit = false) { global $flag_ob; @@ -309,8 +316,8 @@ function debug_page($no_exit = false) { $link = $GLOBALS['clean_link']; $link->addvar('debug_objet', $nom_skel); $link->delvar('debug_affiche'); - echo " <a href='".$link->getUrl()."&debug_affiche=code'>code</a>"; echo " <a href='".$link->getUrl()."&debug_affiche=resultat'>resultat</a>"; + echo " <a href='".$link->getUrl()."&debug_affiche=code'>code</a>"; echo "</li>\n<ul>\n"; if (is_array($debug_objets['pretty'])) @@ -321,6 +328,7 @@ function debug_page($no_exit = false) { $link = $GLOBALS['clean_link']; $link->addvar('debug_objet', $nom); $link->delvar('debug_affiche'); + echo " <a href='".$link->getUrl()."&debug_affiche=boucle'>boucle</a>"; echo " <a href='".$link->getUrl()."&debug_affiche=code'>code</a>"; echo " <a href='".$link->getUrl()."&debug_affiche=resultat'>resultat</a>"; echo "</li>\n"; @@ -334,9 +342,12 @@ function debug_page($no_exit = false) { foreach ($res as $view) { echo "<hr>".interdire_scripts($view); } - } else if ($debug_objet AND $debug_affiche == 'code' AND $res = $debug_objets['boucles'][$debug_objet]) { + } else if ($debug_objet AND $debug_affiche == 'code' AND $res = $debug_objets['code'][$debug_objet]) { echo "<b>".$debug_objets['pretty'][$debug_objet]."</b><br />"; highlight_string("<"."?php\n".$res."\n?".">"); + } else if ($debug_objet AND $debug_affiche == 'boucle' AND $res = $debug_objets['boucle'][$debug_objet]) { + echo "<b>".$debug_objets['pretty'][$debug_objet]."</b><br />"; + highlight_string($res); } diff --git a/inc-compilo.php3 b/inc-compilo.php3 index c717fb27ae7b452ba073687a1d42984d822860e0..084f517d99745cf89f789ed941248429805996db 100644 --- a/inc-compilo.php3 +++ b/inc-compilo.php3 @@ -518,7 +518,7 @@ function calculer_squelette($squelette, $nom, $gram, $sourcefile) { $boucles = ''; spip_timer('calcul_skel'); include_local("inc-$gram-squel.php3"); - $racine = parser($squelette, '',$boucles); + $racine = parser($squelette, '',$boucles, $nom); # include_local('inc-compilo-debug.php3'); # afftable($racine); # affboucles($boucles); diff --git a/inc-html-squel.php3 b/inc-html-squel.php3 index 394565fa11ea2ed792e97c429d3ebe1a17e0045b..a79b45d6024aed64ab3dadc4a66f15e6578b01b0 100644 --- a/inc-html-squel.php3 +++ b/inc-html-squel.php3 @@ -225,7 +225,7 @@ function parser_param($params, &$result, $idb) { $result->param = $params2; } -function parser($texte, $id_parent, &$boucles) { +function parser($texte, $id_parent, &$boucles, $nom) { $all_res = array(); @@ -233,6 +233,14 @@ function parser($texte, $id_parent, &$boucles) { $nom_boucle = $regs[1].$regs[2]; $p = strpos($texte, '<BOUCLE'.$nom_boucle); + // envoyer la boucle au debugueur + if ($GLOBALS['var_debug']) { + $preg = "@<B($nom_boucle|OUCLE${nom_boucle}[^-_.a-zA-Z0-9][^>]*)>" + . ".*</(BOUCLE|/?B)$nom_boucle>@ms"; + preg_match($preg, $texte, $match); + boucle_debug ($nom_boucle, $nom, $match[0]); + } + // // Recuperer la partie principale de la boucle // @@ -313,10 +321,10 @@ function parser($texte, $id_parent, &$boucles) { $texte = substr($texte, $p + strlen($s)); } - $result->cond_avant = parser($result->cond_avant, $id_parent,$boucles); - $result->cond_apres = parser($result->cond_fin, $id_parent,$boucles); - $result->cond_altern = parser($result->cond_altern,$id_parent,$boucles); - $result->milieu = parser($milieu, $id_boucle,$boucles); + $result->cond_avant = parser($result->cond_avant, $id_parent,$boucles, $nom); + $result->cond_apres = parser($result->cond_fin, $id_parent,$boucles, $nom); + $result->cond_altern = parser($result->cond_altern,$id_parent,$boucles, $nom); + $result->milieu = parser($milieu, $id_boucle,$boucles, $nom); $all_res = array_merge($all_res, parser_champs_etendus($debut)); $all_res[] = $result;