$niveau_precedent) {
$resultat .= str_repeat("
\n- \n", $niveau - $niveau_precedent);
$resultat .= $ligne . "\n";
} else {
$resultat .= str_repeat("
\n
\n", $niveau_precedent - $niveau);
if ($niveau > 0 && $ligne != "")
$resultat .= "\n\n$ligne\n";
}
$niveau_precedent = $niveau;
}
$resultat .= str_repeat("\n\n", $niveau_precedent);
return $resultat;
}
function wiki_formater_lien($lien_externe, $lien) {
preg_match("/^([^#|]*)#?([^|]*)\|?(.*)$/", $lien, $matches);
$nom_page = $matches[1];
$nom_ancre = $matches[2];
$texte_lien = $matches[3];
if ($nom_page == "" && $nom_ancre == "")
return $texte_lien;
if ($texte_lien == "") {
if ($nom_page != "")
$texte_lien = $nom_page;
else
$texte_lien = $nom_ancre;
}
if ($nom_page != "") {
if ($lien_externe == "") {
$url_lien = url("page", $nom_page);
} else {
$url_lien = htmlentities($nom_page, ENT_QUOTES, "UTF-8");
}
}
if ($nom_ancre != "")
$url_lien .= "#" . htmlentities(urlencode($nom_ancre), ENT_QUOTES, "UTF-8");
return "" . $texte_lien . "";
}
function wiki_base($tags, $nom_resultat) {
$donnees = $tags[$nom_resultat];
$tags["niveau entetes"] = ($tags["niveau entetes"] != "") ? $tags["niveau entetes"] : 0;
$niveau_entetes = $tags["niveau entetes"];
/* === Titres === */
$donnees = preg_replace('/^(={1,6})\s*(.*?)\s*\1$/me',
'"\n\n$2\n"',
$donnees);
/* '''Emphases''' */
$donnees = preg_replace("/'''''(.*)'''''/Um", '$1', $donnees); /* À éviter */
$donnees = preg_replace("/'''(.*)'''/Um", '$1', $donnees);
$donnees = preg_replace("/''(.*)''/Um", '$1', $donnees);
/* [Liens internes] et [[liens externes]] */
// TODO : capture : [xyz]], le 2e ] ne devrait être capturé que s'il y en a deux au début.
$donnees = preg_replace('/\[(\[?)([^]]*?)\]\]?/me', "wiki_formater_lien('$1', unquote('$2'))", $donnees);
/* * Listes */
$donnees = preg_replace('/^([ \t]*\*[ \t*]+.*\n?)+/me',
"'\n
\n' . wiki_formater_liste(unquote('$0')) . '\n'",
$donnees);
/* Paragraphes (les lignes vides séparent les paragraphes) */
$donnees = preg_replace('/^/', "
\n", $donnees);
$donnees = preg_replace('/$/D', "\n
", $donnees);
$donnees = preg_replace('/^\n/m', "\n\n\n", $donnees);
$donnees = preg_replace('/
\s*<\/p>/m', '', $donnees);
/* Nettoyage du code xhtml */
$donnees = preg_replace('/^\n/m', '', $donnees);
$donnees = preg_replace('/(
)([^\n])/m', "$1\n$2", $donnees);
$tags[$nom_resultat] = $donnees;
return $tags;
}
enregisterPlugin("wiki");
?>