From bdf9e307f4a6be5bfc9131a6ac48fac34ac4d6e9 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Sat, 27 Aug 2005 11:35:12 +0000
Subject: [PATCH] resoud divers bugs concernant les tableaux :

ligne de texte
| tableau | sans | sauts | de | ligne|

|<doc2|left>|<cadre>ok</cadre>|
---
 ecrire/inc_texte.php3 | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3
index c2c784bae8..2b9ca159ed 100644
--- a/ecrire/inc_texte.php3
+++ b/ecrire/inc_texte.php3
@@ -189,7 +189,7 @@ function echappe_html($letexte, $source='SOURCEPROPRE', $no_transform=false) {
 		foreach ($matches as $match) {
 			$num_echap++;
 
-			// Si le resultat contient des <div>, forcer la sortie de paragraphes			
+			// Si le resultat contient des <div>, forcer la sortie du paragraphe
 			if ( $match[1] == "doc" OR $match[1] == "emb" OR eregi("^\|center", $match[3]) )  {
 				$letexte = str_replace($match[0],
 					"\n\n</no p>@@SPIP_$source$num_echap@@<no p>\n\n", $letexte);
@@ -942,13 +942,22 @@ function traiter_raccourcis_generale($letexte) {
 	//
 	// Tableaux
 	//
+
+	// traiter le cas particulier des echappements (<doc...> par exemple)
+	// qui auraient provoque des \n\n</no p> devant les | des tableaux
+	$letexte = preg_replace(',[|]\n\n</no p>@@,','|@@', $letexte);
+	$letexte = preg_replace(',@@<no p>\n\n[|],','@@|', $letexte);
+
+	// ne pas oublier les tableaux au debut ou a la fin du texte
 	$letexte = preg_replace(",^\n?[|],", "\n\n|", $letexte);
 	$letexte = preg_replace(",\n\n+[|],", "\n\n\n\n|", $letexte);
 	$letexte = preg_replace(",[|](\n\n+|\n?$),", "|\n\n\n\n", $letexte);
-	if (preg_match_all(',\n\n[|].*[|]\n\n,Ums', $letexte,
+
+	// traiter chaque tableau
+	if (preg_match_all(',[^|](\n[|].*[|]\n)[^|],Ums', $letexte,
 	$regs, PREG_SET_ORDER))
 	foreach ($regs as $tab) {
-		$letexte = str_replace($tab[0], traiter_tableau($tab[0]), $letexte);
+		$letexte = str_replace($tab[1], traiter_tableau($tab[1]), $letexte);
 	}
 
 	//
-- 
GitLab