Esempio n. 1
0
function core_traiter_raccourcis($letexte)
{
    // Appeler les fonctions de pre_traitement
    $letexte = pipeline('pre_propre', $letexte);
    // Gerer les notes (ne passe pas dans le pipeline)
    $notes = charger_fonction('notes', 'inc');
    list($letexte, $mes_notes) = $notes($letexte);
    //
    // Tableaux
    //
    // ne pas oublier les tableaux au debut ou a la fin du texte
    $letexte = preg_replace(",^\n?[|],S", "\n\n|", $letexte);
    $letexte = preg_replace(",\n\n+[|],S", "\n\n\n\n|", $letexte);
    $letexte = preg_replace(",[|](\n\n+|\n?\$),S", "|\n\n\n\n", $letexte);
    if (preg_match_all(',[^|](\\n[|].*[|]\\n)[^|],UmsS', $letexte, $regs, PREG_SET_ORDER)) {
        foreach ($regs as $t) {
            $letexte = str_replace($t[1], traiter_tableau($t[1]), $letexte);
        }
    }
    $letexte = "\n" . trim($letexte);
    // les listes
    if (strpos($letexte, "\n-*") !== false or strpos($letexte, "\n-#") !== false) {
        $letexte = traiter_listes($letexte);
    }
    // Proteger les caracteres actifs a l'interieur des tags html
    if (preg_match_all(_RACCOURCI_BALISE, $letexte, $regs, PREG_SET_ORDER)) {
        foreach ($regs as $reg) {
            $insert = strtr($reg[0], _RACCOURCI_PROTEGER, _RACCOURCI_PROTECTEUR);
            $letexte = str_replace($reg[0], $insert, $letexte);
        }
    }
    // Traitement des alineas
    list($a, $b) = definir_raccourcis_alineas();
    $letexte = preg_replace($a, $b, $letexte);
    //  Introduction des attributs class_spip* et autres raccourcis
    list($a, $b) = $GLOBALS['spip_raccourcis_typo'];
    $letexte = preg_replace($a, $b, $letexte);
    $letexte = preg_replace('@^\\n<br />@S', '', $letexte);
    // Retablir les caracteres proteges
    $letexte = strtr($letexte, _RACCOURCI_PROTECTEUR, _RACCOURCI_PROTEGER);
    // Fermer les paragraphes ; mais ne pas forcement en creer si un seul
    $letexte = paragrapher($letexte, $GLOBALS['toujours_paragrapher']);
    // Appeler les fonctions de post-traitement
    $letexte = pipeline('post_propre', $letexte);
    if ($mes_notes) {
        $notes($mes_notes);
    }
    return $letexte;
}
Esempio n. 2
0
/**
 * Callback de traitement de chaque tableau
 *
 * @param array $m
 * @return string
 */
function replace_tableaux($m)
{
    return $m[1] . traiter_tableau($m[2]) . $m[3];
}