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

Le validateur xml intégré à Spip et appelable depuis le débusqueur souffrait...

Le validateur xml intégré à Spip et appelable depuis le débusqueur souffrait de quelques incohérences (depuis l'introduction du plugin "affichage_final" peut-etre). Il est à nouveau accessible, en mettant '$xhtml = "sax";' dans mes_options. La déduction de la ligne fautive dans le squelette à partir de la ligne fautive dans le résultat ne remarche en revanche pas encore, mais le problème a l'air plus général car les arguments de debug_sequence déclenche un Warning sur le modele "pagination". Tout ça est neutralisé par un @ ligne 450 de compiler.php, et un test préventif ligne 235 de debug.php mais il faudra y revenir.
parent 99bb05b7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -107,7 +107,7 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') {
)
) ? parametre_url(self(),'var_mode', 'debug', '&'): '';
$analyser = !$xhtml ? "" :
(($xhtml === 'spip_sax') ?
(($xhtml === 'sax') ?
(parametre_url(self(), 'var_mode', 'debug', '&')
.'&var_mode_affiche=validation') :
('http://validator.w3.org/check?uri='
......
......@@ -109,7 +109,7 @@ function defautElement($parser, $data)
$depth = &$phraseur_xml->depth;
$contenu = &$phraseur_xml->contenu;
$contenu[$depth] .= $data;
@$contenu[$depth] .= $data;
}
// http://doc.spip.org/@translate_entities
......@@ -151,7 +151,7 @@ function xml_parsestring($xml_parser, $data)
xml_get_current_line_number($xml_parser) .
_L(" colonne ") .
xml_get_current_column_number($xml_parser) .
(!$depth ? '' :
(!$phraseur_xml->depth ? '' :
('<br />' .
_L("derni&egrave;re balise non referm&eacute;e&nbsp;: ") .
"<tt>" .
......@@ -162,7 +162,6 @@ function xml_parsestring($xml_parser, $data)
} else $r = $phraseur_xml->res;
xml_parser_free($xml_parser);
return $r;
}
......@@ -173,23 +172,21 @@ var $ouvrant = array();
var $reperes = array();
}
// xml_set_objet a utiliser a terme
global $phraseur_xml, $xml_parser;
$phraseur_xml = new PhraseurXML();
$xml_parser = xml_parser_create($GLOBALS['meta']['charset']);
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);
// http://doc.spip.org/@inc_sax_dist
function inc_sax_dist($page) {
global $phraseur_xml, $xml_parser, $xhtml_error;
$phraseur_xml = new PhraseurXML();
$xml_parser = xml_parser_create($GLOBALS['meta']['charset']);
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);
$res = $phraseur_xml->xml_parsestring($xml_parser, $page);
xml_parser_free($xml_parser);
if ($res[0] != '<')
$xhtml_error = $res;
else
......
......@@ -315,8 +315,7 @@ function f_tidy ($texte) {
AND (_request('var_fragment') === NULL)
AND !headers_sent()) {
# Compatibilite ascendante
if ($xhtml === true) $xhtml ='tidy';
else if ($xhtml == 'spip_sax') $xhtml = 'sax';
if (!is_string($xhtml)) $xhtml ='tidy';
if ($f = charger_fonction($xhtml, 'inc'))
$texte = $f($texte);
......
......@@ -447,7 +447,7 @@ function calculer_liste($tableau, $descr, &$boucles, $id_boucle='') {
return
(($n==1) ? $codes[0] :
"(" . join (" .\n$tab", $codes) . ")");
else return "debug_sequence('$id_boucle', '" .
else return "@debug_sequence('$id_boucle', '" .
($descr['nom']) .
"', " .
$descr['niv'] .
......
......@@ -232,6 +232,7 @@ function trouve_boucle_debug($n, $nom, $debut=0, $boucle = "")
global $debug_objets;
$id = $nom . $boucle;
if (!is_array($debug_objets['sequence'][$id])) return array();
foreach($debug_objets['sequence'][$id] as $v) {
if (!preg_match('/^(.*)(<\?.*\?>)(.*)$/s', $v[2],$r))
$y = substr_count($v[2], "\n");
......@@ -307,8 +308,9 @@ function ancre_texte($texte, $fautifs=array())
{
global $var_mode_ligne;
if ($var_mode_ligne) $fautifs[]=$var_mode_ligne;
$res ='';
$s = highlight_string($texte,true);
if (substr($s,0,6) == '<code>') { $s=substr($s,6); echo '<code>';}
if (substr($s,0,6) == '<code>') { $s=substr($s,6); $res = '<code>';}
$tableau = explode("<br />", $s);
$n = strlen(count($tableau));
......@@ -321,11 +323,12 @@ function ancre_texte($texte, $fautifs=array())
$i=1;
foreach ($tableau as $ligne) {
echo "<br />\n",
sprintf((($i%10) ? $format :$format10), $i, $i),
sprintf(in_array($i, $fautifs) ? $formaterr : '%s', $ligne);
$res .= "<br />\n"
. sprintf((($i%10) ? $format :$format10), $i, $i)
. sprintf(in_array($i, $fautifs) ? $formaterr : '%s', $ligne);
$i++;
}
return $res;
}
// l'environnement graphique du debuggueur
......@@ -417,56 +420,46 @@ function debug_dumpfile ($texte, $fonc, $type) {
echo "<div id=\"debug_boucle\"><fieldset>";
if ($var_mode_affiche == 'resultat') {
echo "<legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>";
ancre_texte(traite_query($debug_objets['requete'][$var_mode_objet]));
echo ancre_texte(traite_query($debug_objets['requete'][$var_mode_objet]));
foreach ($res as $view)
if ($view) echo "\n<br /><fieldset>",interdire_scripts($view),"</fieldset>";
} else if ($var_mode_affiche == 'code') {
echo "<legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>";
ancre_texte("<"."?php\n".$res."\n?".">");
echo ancre_texte("<"."?php\n".$res."\n?".">");
} else if ($var_mode_affiche == 'boucle') {
echo "<legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>";
ancre_texte($res);
echo ancre_texte($res);
} else if ($var_mode_affiche == 'squelette') {
echo "<legend>",$debug_objets['sourcefile'][$var_mode_objet],"</legend>";
ancre_texte($debug_objets['squelette'][$var_mode_objet]);
echo ancre_texte($debug_objets['squelette'][$var_mode_objet]);
}
echo "</fieldset></div>";
}
}
if ($texte) {
$ouvrant = $fermant = $err = "";
$titre = $GLOBALS['var_mode_affiche'];
if ($titre != 'validation') {
$titre = 'zbug_' . $titre;
}
$err = "";
$titre = $GLOBALS['var_mode_affiche'];
if ($titre != 'validation') {
$titre = 'zbug_' . $titre;
$texte = ancre_texte($texte, array('',''));
} else {
list($texte, $err) = emboite_texte($texte, $self);
if ($err === false)
$err = _T('impossible');
elseif ($err === true)
$err = _T('correcte');
}
else if ($sax = charger_fonction('sax', 'inc')
AND $res = $sax($texte)) {
if (ereg("^[[:space:]]*([^<][^0-9]*)([0-9]*)(.*[^0-9])([0-9]*)$", $GLOBALS['xhtml_error'], $r)) {
$fermant = $r[2];
$ouvrant = $r[4];
$rf = reference_boucle_debug($fermant, $fonc, $self);
$ro = reference_boucle_debug($ouvrant, $fonc, $self);
$err = ": " . $r[1] .
"<a href='#L" . $r[2] . "'>$r[2]</a>$rf" .
$r[3] ."<a href='#L" . $r[4] . "'>$r[4]</a>$ro";
} else {
$err = _T('correcte');
$texte = $res;
}
}
else
$err = _T('impossible');
echo "<div id=\"debug_boucle\"><fieldset><legend>",
_T($titre),
' ',
$err,
"</legend>";
ancre_texte($texte, array($ouvrant, $fermant));
echo "</fieldset></div>";
echo "<div id=\"debug_boucle\"><fieldset><legend>",
_T($titre),
' ',
$err,
"</legend>";
echo $texte;
echo "</fieldset></div>";
}
echo "\n</div>";
include_spip('balise/formulaire_admin');
......@@ -476,4 +469,27 @@ function debug_dumpfile ($texte, $fonc, $type) {
echo '</body></html>';
exit;
}
function emboite_texte($texte,$self='')
{
if (!($sax = charger_fonction('sax', 'inc') AND $res = $sax($texte)))
return array(ancre_texte($texte, array('','')), false);
elseif (!ereg("^[[:space:]]*([^<][^0-9]*)([0-9]*)(.*[^0-9])([0-9]*)$",
$GLOBALS['xhtml_error'],
$r))
return array(ancre_texte($texte, array('', '')), true);
else {
$fermant = $r[2];
$ouvrant = $r[4];
if (isset($GLOBALS['debug_objets'])) {
$rf = reference_boucle_debug($fermant, $fonc, $self);
$ro = reference_boucle_debug($ouvrant, $fonc, $self);
} else $rf = $ro = '';
$err = ": " . $r[1] .
"<a href='#L" . $r[2] . "'>$r[2]</a>$rf" .
$r[3] ."<a href='#L" . $r[4] . "'>$r[4]</a>$ro";
return array(ancre_texte($texte, array($ouvrant, $fermant)), $err);
}
}
?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter