[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    www/areas/l10n/teams/fr
From:       Nicolas Ternisien <nicolas.ternisien () gmail ! com>
Date:       2008-09-30 22:43:56
Message-ID: 1222814636.916545.8500.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 866459 by ternisien:

Use new Pology XML syntax for error highlighting

 M  +29 -12    pology-errors.php  


--- trunk/www/areas/l10n/teams/fr/pology-errors.php #866458:866459
@@ -210,18 +210,28 @@
 		return NULL;
 	}
 	
-	function highlightRulesError($message, $start, $end) {
+	function highlightRulesError($message, $highlights) {
 		define(LEFT_MARKER, "#{");
 		define(RIGHT_MARKER, "}#");
 		
-		$left = mb_substr($message, 0, $start, 'UTF-8');
-		//echo "Left=$start : [" . $left . "] " . mb_strlen($left). " \n";
-
-		$middle = mb_substr($message, $start, $end - $start, 'UTF-8');
-		//echo "Middle : [" . $middle . "]\n";
-
-		$right = mb_substr($message, $end, mb_strlen($message, 'UTF-8'), 'UTF-8');
-		//echo "End=$end : [" . $right . "]\n";
+		// Important : The reading must be from last to begin, because adding marker will \
modify error indexes. +		// So each error has to be added from the last error to the \
first, to NEVER modify indexes.  +		// Another problem is that crossing errors could \
not work with this system. +		for ($i = count($highlights) - 1 ; $i>=0 ; $i--) {
+			$start = $highlights[$i][0];
+			$end = $highlights[$i][1];
+			
+			$left = mb_substr($message, 0, $start, 'UTF-8');
+			//echo "Left=$start : [" . $left . "] " . mb_strlen($left). " \n";
+	
+			$middle = mb_substr($message, $start, $end - $start, 'UTF-8');
+			//echo "Middle : [" . $middle . "]\n";
+	
+			$right = mb_substr($message, $end, mb_strlen($message, 'UTF-8'), 'UTF-8');
+			//echo "End=$end : [" . $right . "]\n";
+			
+			$message = $left.LEFT_MARKER.$middle.RIGHT_MARKER.$right;
+		}
 		
 		$result = prepareMessage($left.LEFT_MARKER.$middle.RIGHT_MARKER.$right);
 		
@@ -265,9 +275,16 @@
 		
 		$msgstr = $error->msgstr;
 		
-		if ($typeCheck == ERROR_TYPE_RULES)
-			$msgstr = highlightRulesError($msgstr, $error->start, $error->end);
-		else if ($typeCheck == ERROR_TYPE_SPELL)
+		if ($typeCheck == ERROR_TYPE_RULES) {
+			$highlights = array();
+			
+			foreach ($error->highlight as $highlight) {
+				$highlights[] = array( $highlight["begin"], $highlight["end"] );
+			}
+			
+			$msgstr = highlightRulesError($msgstr, $highlights);
+			
+		} else if ($typeCheck == ERROR_TYPE_SPELL)
 			$msgstr = highlightSpellError($msgstr, $error->faulty);
 		
 		echo "


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic