Skip to content
Extraits de code Groupes Projets
Valider 9bd69b91 rédigé par esj's avatar esj
Parcourir les fichiers

Extension du débusqueur de squelette à la validation et l'indentation

parent e0b359e9
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -189,7 +189,10 @@ function debug_dumpfile ($texte, $fonc, $type) { ...@@ -189,7 +189,10 @@ function debug_dumpfile ($texte, $fonc, $type) {
global $debug_objets, $var_mode_objet, $var_mode_affiche; global $debug_objets, $var_mode_objet, $var_mode_affiche;
$debug_objets[$type][$fonc . 'tout'] = $texte; $debug_objets[$type][$fonc . 'tout'] = $texte;
if (!$debug_objets['sourcefile']) return; if (!$debug_objets['sourcefile']) return;
if ($texte && ($var_mode_objet != $fonc || $var_mode_affiche != $type)) if ($texte &&
($var_mode_objet != $fonc ||
($var_mode_affiche != $type &&
($var_mode_affiche != 'validation' || $type != 'resultat'))))
return; return;
$link = new Link; $link = new Link;
...@@ -211,6 +214,7 @@ function debug_dumpfile ($texte, $fonc, $type) { ...@@ -211,6 +214,7 @@ function debug_dumpfile ($texte, $fonc, $type) {
foreach ($debug_objets['sourcefile'] as $nom_skel => $sourcefile) { foreach ($debug_objets['sourcefile'] as $nom_skel => $sourcefile) {
echo "<fieldset><legend>",$sourcefile,"&nbsp;: "; echo "<fieldset><legend>",$sourcefile,"&nbsp;: ";
echo " <a href='",$self, "&amp;var_mode_objet=$nom_skel&amp;var_mode_affiche=validation'>"._T('validation')."</a>";
echo " <a href='",$self, "&amp;var_mode_objet=$nom_skel&amp;var_mode_affiche=resultat'>"._T('zbug_resultat')."</a>"; echo " <a href='",$self, "&amp;var_mode_objet=$nom_skel&amp;var_mode_affiche=resultat'>"._T('zbug_resultat')."</a>";
echo " <a href='", $self, "&amp;var_mode_objet=$nom_skel&amp;var_mode_affiche=code'>"._T('zbug_code')."</a></legend>"; echo " <a href='", $self, "&amp;var_mode_objet=$nom_skel&amp;var_mode_affiche=code'>"._T('zbug_code')."</a></legend>";
...@@ -231,7 +235,7 @@ function debug_dumpfile ($texte, $fonc, $type) { ...@@ -231,7 +235,7 @@ function debug_dumpfile ($texte, $fonc, $type) {
} }
echo "</table>\n</fieldset>\n"; echo "</table>\n</fieldset>\n";
} }
echo "</div>\n"; echo "</div>\n";
if ($var_mode_objet && ($res = $debug_objets[$var_mode_affiche][$var_mode_objet])) { if ($var_mode_objet && ($res = $debug_objets[$var_mode_affiche][$var_mode_objet])) {
if ($var_mode_affiche == 'resultat') { if ($var_mode_affiche == 'resultat') {
echo "<div id=\"debug_boucle\"><fieldset><legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>"; echo "<div id=\"debug_boucle\"><fieldset><legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>";
...@@ -241,7 +245,7 @@ function debug_dumpfile ($texte, $fonc, $type) { ...@@ -241,7 +245,7 @@ function debug_dumpfile ($texte, $fonc, $type) {
if ($res) echo "<br /><fieldset>",interdire_scripts($view),"</fieldset>"; if ($res) echo "<br /><fieldset>",interdire_scripts($view),"</fieldset>";
echo "</fieldset></div>"; echo "</fieldset></div>";
} else if ($var_mode_affiche == 'code') { } else if ($var_mode_affiche == 'code') {
echo "<div id=\"debug_boucle\"><fieldset><legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>"; echo "<div id=\"debug_boucle\"><fieldset><legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>";
highlight_string("<"."?php\n".$res."\n?".">"); highlight_string("<"."?php\n".$res."\n?".">");
echo "</fieldset></div>"; echo "</fieldset></div>";
...@@ -250,12 +254,33 @@ function debug_dumpfile ($texte, $fonc, $type) { ...@@ -250,12 +254,33 @@ function debug_dumpfile ($texte, $fonc, $type) {
echo "<pre>".entites_html($res)."</pre>"; echo "<pre>".entites_html($res)."</pre>";
echo "</fieldset></div>"; echo "</fieldset></div>";
} }
} }
if ($texte) { if ($texte) {
echo "<div id=\"debug_boucle\"><fieldset><legend>"; $err = "";
echo _T('zbug_' . $GLOBALS['var_mode_affiche']); $titre = $GLOBALS['var_mode_affiche'];
echo "</legend>"; if ($titre != 'validation')
$titre = 'zbug_' . $titre;
else {
global $phraseur_xml, $xml_parser;
include_ecrire("inc_phraseur_xml.php");
$res = $phraseur_xml->xml_parsestring($xml_parser, $texte);
if (!$res)
$err = _L("impossible");
elseif (ereg("(^erreur.*[^0-9])([0-9]*)$", $res, $r))
$err = $r[1] ."<a href='#L" . $r[2] . "'>$r[2]</a>";
else
{
$err = _L("correcte");
$texte = $res;
}
}
echo "<div id=\"debug_boucle\"><fieldset><legend>",
_T($titre),
' ',
$err,
"</legend>";
ob_start(); ob_start();
highlight_string($texte); highlight_string($texte);
$s = ob_get_contents(); $s = ob_get_contents();
...@@ -267,10 +292,11 @@ function debug_dumpfile ($texte, $fonc, $type) { ...@@ -267,10 +292,11 @@ function debug_dumpfile ($texte, $fonc, $type) {
"d </span>"; "d </span>";
$format10=str_replace('black','pink',$format); $format10=str_replace('black','pink',$format);
$i=1; $i=1;
foreach ($tableau as $ligne)
echo sprintf(($i%10) ? $format :$format10, $i++), $ligne ;
foreach ($tableau as $ligne)
echo sprintf(($i%10) ? $format :$format10, $i++),
"<a id='L$i'></a>",
$ligne ;
echo "</fieldset></div>"; echo "</fieldset></div>";
} }
echo "\n</div>"; echo "\n</div>";
......
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2005 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
//
// Ce fichier ne sera execute qu'une fois
if (defined("INC_PHRASEUR_XML")) return;
define("INC__PHRASEUR_XML", "1");
class PhraseurXML {
function debutElement($parser, $name, $attrs)
{
global $phraseur_xml;
$depth = &$phraseur_xml->depth;
$contenu = &$phraseur_xml->contenu;
$ouvrant = &$phraseur_xml->ouvrant;
$res = &$phraseur_xml->res;
if ($t = $ouvrant[$depth])
{
$res .= '<' . $t . '>';
$ouvrant[$depth] = '';
}
$t = $contenu[$depth];
$res .= ereg_replace("[\n\t ]+$", "", $t) . "\n$depth";
$contenu[$depth] = "";
$att = '';
$sep = ' ';
foreach ($attrs as $k => $v) {
$delim = strpos($v, "'") === false ? "'" : '"';
$att .= $sep . $k . "=" . $delim .
$phraseur_xml->translate_entities($v)
. $delim;
$sep = "\n $depth";
}
$depth .= ' ';
$ouvrant[$depth] = $name . $att;
$contenu[$depth]= "";
}
function finElement($parser, $name)
{
global $phraseur_xml;
$depth = &$phraseur_xml->depth;
$contenu = &$phraseur_xml->contenu;
$ouvrant = &$phraseur_xml->ouvrant;
$res = &$phraseur_xml->res;
if ($ouv = $ouvrant[$depth])
{
$ouvrant[$depth] = '';
}
$t = $contenu[$depth];
$depth = substr($depth, 2);
$t = ereg_replace("[\n\t ]+$", "\n$depth", $t);
if ($t)
$res .= ($ouv ? ('<' . $ouv . '>') : '') . $t . "</" . $name . ">";
else
$res .= ($ouv ? ('<' . $ouv . ' />') : ("</" . $name . ">"));
}
function textElement($parser, $data)
{
global $phraseur_xml;
$depth = &$phraseur_xml->depth;
$contenu = &$phraseur_xml->contenu;
$contenu[$depth] .= $phraseur_xml->translate_entities($data);
}
function PiElement($parser, $target, $data)
{
global $phraseur_xml, $xml_parser;
$depth = &$phraseur_xml->depth;
$contenu = &$phraseur_xml->contenu;
if (strtolower($target) != "php")
$contenu[$depth] .= $data;
else {
ob_start();
eval($data);
$data = ob_get_contents();
ob_end_clean();
// xml_parse($xml_parser, $data); // pas si simple
$contenu[$depth] .= $data;
}
}
function defautElement($parser, $data)
{
global $phraseur_xml;
$depth = &$phraseur_xml->depth;
$contenu = &$phraseur_xml->contenu;
$contenu[$depth] .= $data;
}
function translate_entities($data)
{
return
str_replace('<', '&lt;',
str_replace('>', '&gt;',
ereg_replace('[&]([A-Za-z0-9]*[^A-Za-z0-9;])',
"&amp;\\1",
$data)));
}
function xml_parsefile($xml_parser, $file)
{
if (!($fp = fopen($file, "r"))) {
die("Impossible d'ouvrir le fichier XML");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, str_replace('&#8217;',"'",$data), feof($fp))) {
return (sprintf("erreur XML : %s ligne %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
return "";
}
function xml_parsestring($xml_parser, $data)
{
global $phraseur_xml;
$r = "";
if (!xml_parse($xml_parser, $data, true)) {
$r = (sprintf("erreur XML : %s ligne %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
} else $r = $phraseur_xml->res;
xml_parser_free($xml_parser);
return $r;
}
var $depth = "";
var $contenu = array();
var $ouvrant = array();
var $res = "";
}
// xml_set_objet a utiliser a terme
global $phraseur_xml, $xml_parser;
$phraseur_xml = new PhraseurXML();
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser,
array($phraseur_xml, "debutElement"),
array($phraseur_xml, "finElement"));
xml_set_character_data_handler($xml_parser, array($phraseur_xml, "textElement"));
xml_set_processing_instruction_handler($xml_parser, array($phraseur_xml, 'PiElement'));
xml_set_default_handler($xml_parser, array($phraseur_xml, "defautElement"));
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
// exemple d'appels
#$error = $phraseur_xml->xml_parsefile($xml_parser, $_SERVER['argv'][1]);
#$error = $phraseur_xml->xml_parsestring($xml_parser, "<html></html>");
#echo $error ? $error : $phraseur_xml->res;
?>
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
if (defined("_ECRIRE_INC_SURLIGNE")) return; if (defined("_ECRIRE_INC_SURLIGNE")) return;
define("_ECRIRE_INC_SURLIGNE", "1"); define("_ECRIRE_INC_SURLIGNE", "1");
define("MARQUEUR_SURLIGNE", 'span class="spip_surligneconditionnel">'); define("MARQUEUR_SURLIGNE", '!-- debut_surligneconditionnel -->');
define("MARQUEUR_FSURLIGNE", '/span >'); define("MARQUEUR_FSURLIGNE", '!-- debut_surligneconditionnel -->');
// Balises qui ne font rien en mode normal // Balises qui ne font rien en mode normal
// mais vont etre substitue'es en mode recherche // mais vont etre substitue'es en mode recherche
......
...@@ -75,8 +75,6 @@ if (defined("_INC_PUBLIC")) { ...@@ -75,8 +75,6 @@ if (defined("_INC_PUBLIC")) {
} }
// Passer la main au debuggueur le cas echeant // Passer la main au debuggueur le cas echeant
// (depuis le forcage du recalcul du squelette,
// inc-calcul doit le faire avant: ce code me semble inutile)
if ($var_mode == 'debug') { if ($var_mode == 'debug') {
include_ecrire("inc_debug_sql.php3"); include_ecrire("inc_debug_sql.php3");
debug_dumpfile('',$var_mode_objet,$var_mode_affiche); debug_dumpfile('',$var_mode_objet,$var_mode_affiche);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter