Valider 2ea89809 rédigé par Fil's avatar Fil
Parcourir les fichiers

introduction d'un filtre supplementaire dans la fonction propre() :...

introduction d'un filtre supplementaire dans la fonction propre() : traiter_raccourci_liens va automatiquement detecter les sequences de la forme www.rezo.net ou http://rezo.net/ pour les rendre sous forme de lien actif. De maniere a rendre ca modifiable/surchargeable, j'en profite : une bonne partie des fonctions de propre() migrent dans la definition du pipeline. (oblige sans doute a purger tmp/charger_pipelines.php)
parent 3d19c94f
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -373,6 +373,7 @@ function pipeline_precompile(){
		$pipe = array_filter(explode('|',$pipeline));
		// Eclater le pipeline en filtres et appliquer chaque filtre
		foreach ($pipe as $fonc) {
			$fonc = trim($fonc);
			$s_call .= '$val = minipipe(\''.$fonc.'\', $val);'."\n";
			if (isset($spip_matrice[$fonc])){
				$file = $spip_matrice[$fonc];
+30 −13
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -1224,6 +1224,35 @@ function traiter_poesie($letexte)
	return $letexte;
}

// callback pour la fonction traiter_raccourci_liens()
function autoliens_callback($r) {
	if (strlen($r[1])) {
		$l = preg_replace(',^http:/*,', '', $r[1]);
		if (preg_match(
		'/^(?:[^\W_]((?:[^\W_]|-){0,61}[^\W_])?\.)+[a-zA-Z]{2,6}\b/S', $l))
			return inserer_attribut(expanser_liens('[->http://'.$l.']'),
				'rel', 'nofollow');
	}
	return $r[0];
}

// extraire les liens ecrits en mode texte brut
function traiter_raccourci_liens($texte) {
	return preg_replace_callback(
	',\[[^\[\]]*->.*?\]|<[^<>]*>|((http:|www\.)[^"\'\s\[\]]+),S',
	'autoliens_callback', $texte);
	return $texte;
}

// Harmonise les retours chariots et mange les paragraphes html
function traiter_retours_chariots($letexte) {
	$letexte = preg_replace(",\r\n?,S", "\n", $letexte);
	$letexte = preg_replace(",<p[>[:space:]],iS", "\n\n\\0", $letexte);
	$letexte = preg_replace(",</p[>[:space:]],iS", "\\0\n\n", $letexte);
	return $letexte;
}


// Nettoie un texte, traite les raccourcis autre qu'URL, la typo, etc.
// http://doc.spip.org/@traiter_raccourcis
function traiter_raccourcis($letexte) {
@@ -1231,19 +1260,7 @@ function traiter_raccourcis($letexte) {
	// Appeler les fonctions de pre_traitement
	$letexte = pipeline('pre_propre', $letexte);

	$letexte = traiter_poesie($letexte);

	// Harmoniser les retours chariot
	$letexte = preg_replace(",\r\n?,S", "\n", $letexte);

	// Recuperer les paragraphes HTML

	$letexte = preg_replace(",<p[>[:space:]],iS", "\n\n\\0", $letexte);
	$letexte = preg_replace(",</p[>[:space:]],iS", "\\0\n\n", $letexte);

	$letexte = traiter_raccourci_glossaire($letexte);
	$letexte = traiter_raccourci_ancre($letexte);

	// Gerer les notes (ne passe pas dans le pipeline)
	list($letexte, $mes_notes) = traite_raccourci_notes($letexte);

	// A present on introduit des attributs class_spip*
+3 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -76,15 +76,16 @@ function include_spip($f, $include = true) {

// appel unitaire d'une fonction du pipeline
// utilisee dans le script pipeline precompile
// on passe $val par reference pour limiter les allocations memoire
// http://doc.spip.org/@minipipe
function minipipe($fonc,$val){
function minipipe($fonc,&$val){

	// fonction
	if (function_exists($fonc))
		$val = call_user_func($fonc, $val);

	// Class::Methode
	else if (preg_match("/^(\w*)::(\w*)$/", $fonc, $regs)
	else if (preg_match("/^(\w*)::(\w*)$/S", $fonc, $regs)
	AND $methode = array($regs[1], $regs[2])
	AND is_callable($methode))
		$val = call_user_func($methode, $val);
+3 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -229,7 +229,9 @@ $spip_pipeline = array(
	'nettoyer_raccourcis_typo' => '',
	'pre_boucle' => '',
	'post_boucle' => '',
	'pre_propre' => '|extraire_multi',
	'pre_propre' => '|extraire_multi|traiter_poesie|traiter_retours_chariots
		|traiter_raccourci_liens|traiter_raccourci_glossaire
		|traiter_raccourci_ancre',
	'post_propre' => '',
	'pre_typo' => '|extraire_multi',
	'post_typo' => '|quote_amp',