Author: bertrand@toggg.com
Date: Wed Jul 5 15:04:14 2006
New Revision: 3823
Log:
* la balise de fermeture est recherchée avec \1 , c’est à dire cadre ou code comme trouvé en début d’espression
* pour l’intérieur (le code en lui-même) on ne cherche pas seulement .* (n’importe quoi) mais ( ? :(( ?R))|.)* : le motif complet recherché , soit un <code>...</code> ou cadre imbriqué , ou n’importe quoi (.) . C’est une regexp récursive.
* une amélioration supplémentaire : le paramètre class peut être donné entre simple ou double apostrophes.
* le texte dans le tag après class="xxx" est capté ce qui pourra permettre des extensions futures, comme insérer des attributs supplémentaires au code html fabriqué.
Modified:
_plugins_/_typo_/coloration_code/coloration_code.php
Modified: _plugins_/_typo_/coloration_code/coloration_code.php
--- _plugins_/_typo_/coloration_code/coloration_code.php (original)
+++ _plugins_/_typo_/coloration_code/coloration_code.php Wed Jul 5 15:04:14 2006
@@ -49,10 +49,10 @@
$rempl ='';
if (preg_match_all(
- ',<(cadre|code)[[:space:]]+class="(.*)"[[:space:]]*>(.*)</(cadre|code)>,Uims',
+ ',<(cadre|code)[[:space:]]+class=("|\')(.*)\2([^>])*>((?:((?R))|.)*)</\1>,Uims',
$texte, $matches, PREG_SET_ORDER))
foreach ($matches as $regs) {
- $code = echappe_retour($regs[3]);
+ $code = echappe_retour($regs[5]);
if(strpos($code, "\n")!==false) {
// Gerer le fichier contenant le code au format texte
@@ -67,7 +67,7 @@
}
}
- $rempl = coloration_code_color(trim($code),$regs[2], $regs[1]);
+ $rempl = coloration_code_color(trim($code),$regs[3], $regs[1]);
if(strpos($code, "\n")!==false) {
$rempl .= "<div class='".$regs[1]."_download' style='text-align: $spip_lang_right;'><a href='$fichier' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>".
propre("<multi>Download[fr]Télécharger</multi>").