Skip to content
Extraits de code Groupes Projets
Valider f93f6401 rédigé par Fil's avatar Fil
Parcourir les fichiers

Traitement des listes à puces et des listes numérotées, corrigé

sur la plan syntaxique (Michael Parienti)
parent 14708a78
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -552,43 +552,70 @@ function typo($letexte) { ...@@ -552,43 +552,70 @@ function typo($letexte) {
} }
// Les listes a puce
function traiter_listes_a_puce ($texte) { //
// Traitement des listes
//
function traiter_listes ($texte) {
$parags = split ("\n[[:space:]]*\n", $texte); $parags = split ("\n[[:space:]]*\n", $texte);
unset($texte); unset($texte);
// chaque paragraphe est traite a part // chaque paragraphe est traite a part
while (list(,$para) = each($parags)) { while (list(,$para) = each($parags)) {
$niveau = 0; $niveau = 0;
$lignes = split("\n-\*", "\n" . $para); $lignes = explode("\n-", "\n" . $para);
// ne pas toucher a la premiere ligne // ne pas toucher a la premiere ligne
list(,$debut) = each($lignes); list(,$debut) = each($lignes);
$texte .= $debut; $texte .= $debut;
// chaque item a sa profondeur = nb d'etoiles (dont une a ete mangee par le split) // chaque item a sa profondeur = nb d'etoiles
unset ($type);
while (list(,$item) = each($lignes)) { while (list(,$item) = each($lignes)) {
ereg("^(\**)[[:space:]]*(.*)", $item, $regs); ereg("^(\**|#*)[[:space:]]*(.*)", $item, $regs);
$profond = 1+strlen($regs[1]); $profond = strlen($regs[1]);
unset ($ajout);
while ($profond > $niveau) { if ($profond > 0) {
$niveau ++; unset ($ajout);
$ajout .= "<ul>";
// changement de type de liste : il faut descendre un
// niveau plus bas, fermer ce niveau, et remonter
$nouv_type = (substr($item,0,1) == '*') ? 'ul' : 'ol';
$change_type = ($type AND ($type <> $nouv_type)) ? 1 : 0;
$type = $nouv_type;
if ($niveau == $profond && !$change_type) {
$ajout = "</li>";
}
while ($niveau > $profond - $change_type) {
$ajout .= $pile_li[$niveau];
$ajout .= $pile_type[$niveau];
$niveau --;
unset ($pile_li[$niveau]);
}
while ($niveau < $profond) {
$niveau ++;
$ajout .= "<$type class=\"spip\">";
$pile_type[$niveau] = "</$type>";
}
$ajout .= "<li class=\"spip\">";
$pile_li[$profond] = "</li>";
} }
while ($profond < $niveau) { else {
$niveau --; $ajout = "\n- "; // puce normale
$ajout .= "</ul>";
} }
if ($ajout) $texte .= $ajout . $regs[2];
$texte .= $ajout ."<li>". $regs[2];
else
$texte .= "</li><li>" . $regs[2];
} }
// retour sur terre // retour sur terre
while ($niveau -- > 0) unset ($ajout);
$texte .= "</li></ul>"; while ($niveau > 0) {
$ajout .= $pile_li[$niveau];
$ajout .= $pile_type[$niveau];
$niveau --;
}
$texte .= $ajout;
// paragraphe // paragraphe
$texte .= "\n\n"; $texte .= "\n\n";
...@@ -814,9 +841,9 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = ' ...@@ -814,9 +841,9 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = '
$letexte = trim($letexte); $letexte = trim($letexte);
// les listes a puce // les listes
if (ereg("\n-\*", "\n".$letexte)) if (ereg("\n-[*#]", "\n".$letexte))
$letexte = traiter_listes_a_puce($letexte); $letexte = traiter_listes($letexte);
// autres raccourcis // autres raccourcis
if ($flag_str_replace && !$flag_preg_replace) { if ($flag_str_replace && !$flag_preg_replace) {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter