Valider 7276b921 rédigé par esj's avatar esj
Parcourir les fichiers

Comme pour les balises LOGO, la balise dérogatoire EMBED_DOCUMENT est réécrite...

Comme pour les balises LOGO, la balise dérogatoire EMBED_DOCUMENT est réécrite dès l'analyse syntaxique afin de produire un arbre de syntaxe abstraite que le compilateur n'a pas besoin de modifier.
parent 67a650bb
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+0 −45
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -316,51 +316,6 @@ function calculer_balise_expose($p, $on, $off)
	return $p;
}

//
// Inserer directement un document dans le squelette
// devient un alias de #MODELE{emb}
//
// On insere simplement un argument {emb} en debut de liste
//
// Attention la syntaxe est derogatoire : il faut donc attraper
// tous les faux-filtres "|autostart=true" et les transformer
// en arguments "{autostart=true}"
//
// On s'arrete au premier filtre ne contenant pas de =, afin de
// pouvoir filtrer le resultat
//
// http://doc.spip.org/@balise_EMBED_DOCUMENT_dist
function balise_EMBED_DOCUMENT_dist($p) {

	if (!is_array($p->param))
		$p->param=array();

	// Produire le premier argument {emb}
	$texte = new Texte;
	$texte->type='texte';
	$texte->texte='emb';
	$param = array(0=>NULL, 1=>array(0=>$texte));
	array_unshift($p->param, $param);

	// Transformer les filtres en arguments
	for ($i=1; $i<count($p->param); $i++) {
		if ($p->param[$i][0]) {
			if (!strstr($p->param[$i][0], '='))
				break;# on a rencontre un vrai filtre, c'est fini
			$texte = new Texte;
			$texte->type='texte';
			$texte->texte=$p->param[$i][0];
			$param = array(0=>$texte);
			$p->param[$i][1] = $param;
			$p->param[$i][0] = NULL;
		}
	}

	// Appeler la balise #MODELE{emb}{arguments}
	if (!function_exists($f = 'balise_modele'))
		$f = 'balise_modele_dist';
	return $f($p);
}

// Debut et fin de surlignage auto des mots de la recherche
// on insere une balise Span avec une classe sans spec:
+29 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -155,6 +155,8 @@ function phraser_champs($texte,$ligne,$result) {
		// ce ltrim est une ereur de conception
		// mais on le conserve par souci de compatibilit
		$texte = ltrim($suite);
		if ($champ->nom_champ == 'EMBED_DOCUMENT')
			phraser_vieux_emb($champ);
		$result[] = $champ;
	  } else {
	    // faux champ
@@ -334,7 +336,8 @@ function phraser_champs_interieurs($texte, $ligne, $sep, $result) {
			if (preg_match(",^LOGO_[A-Z]+,", $match[4])
			AND $champ->param) {
				phraser_vieux_logos($champ);
			}
			} elseif ($match[4] == 'EMBED_DOCUMENT')
				phraser_vieux_emb($champ);
			$champ->avant =
				phraser_champs_exterieurs($match[1],$n,$sep,$result);
			$debut = substr($champ->apres,1);
@@ -410,6 +413,31 @@ function phraser_vieux_logos($p)
	array_unshift($p->param, $args);
}

function phraser_vieux_emb($p)
{
	if (!is_array($p->param))
		$p->param=array();

	// Produire le premier argument {emb}
	$texte = new Texte;
	$texte->texte='emb';
	$param = array('', array($texte));

	// Transformer les filtres en arguments
	for ($i=0; $i<count($p->param); $i++) {
		if ($p->param[$i][0]) {
			if (!strstr($p->param[$i][0], '='))
				break;# on a rencontre un vrai filtre, c'est fini
			$texte = new Texte;
			$texte->texte=$p->param[$i][0];
			$param[] = array($texte);
		}
		array_shift($p->param);
	}
	array_unshift($p->param, $param);	
	$p->nom_champ = 'MODELE';
}

function phraser_logo_faux_filtres($nom)
{
	switch($nom) {