Changeset 82483 in spip-zone


Ignore:
Timestamp:
May 17, 2014, 10:24:41 AM (5 years ago)
Author:
cedric@…
Message:

version fonctionnelle qui traite le markdown entre <md>...</md> dans le texte

Location:
_plugins_/markdown/branches/v0.12.0
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/markdown/branches/v0.12.0/markdown_options.php

    r82482 r82483  
    1515$GLOBALS['spip_pipeline']['pre_propre'] = (isset($GLOBALS['spip_pipeline']['pre_propre'])?$GLOBALS['spip_pipeline']['pre_propre']:'').'||markdown_pre_propre';
    1616
    17 function markdown_pre_propre($texte){
    18         if (!class_exists("Parsedown")){
    19                 include_once _DIR_PLUGIN_MARKDOWN."lib/Parsedown.php";
     17/**
     18 * Appliquer un filtre aux portions <md>...</md> du texte
     19 * @param string $texte
     20 * @param string $filtre
     21 * @return string
     22 */
     23function markdown_filtre_portions_md($texte,$filtre){
     24        if (strpos($texte,"<md>")!==false){
     25                preg_match_all(",<md>(.*)</md>,Uims",$texte,$matches,PREG_SET_ORDER);
     26                foreach($matches as $m){
     27                        $t = $filtre($m[1]);
     28                        $p = strpos($texte,$m[1]);
     29                        $texte = substr_replace($texte,$t,$p-4,strlen($m[1])+9);
     30                }
    2031        }
    21 
    22         $texte = Parsedown::instance()->parse($texte);
    23 
    2432        return $texte;
    2533}
    2634
     35/**
     36 * Pre typo : echapper le code pour le proteger des corrections typo
     37 * @param string $texte
     38 * @return string
     39 */
     40function markdown_pre_typo($texte){
     41        return markdown_filtre_portions_md($texte,"markdown_echappe_code");
     42}
     43function markdown_echappe_code($texte){
     44        if (strpos($texte,"```")!==false){
     45                //var_dump(preg_match(',^```\w+?\s.*\s```,Uims',$texte,$m));
     46                //var_dump($m);
     47                $texte = echappe_html($texte,'md',true,',^```\w+?\s.*\s```,Uims');
     48        }
     49        if (strpos($texte,"`")!==false){
     50                $texte = echappe_html($texte,'md',true,',`.*`,Uims');
     51        }
     52        return "<md>$texte</md>";
     53}
     54
     55/**
     56 * Post typo : retablir le code md echappe en pre-typo
     57 * @param $texte
     58 * @return mixed
     59 */
     60function markdown_post_typo($texte){
     61        if (strpos($texte,"<md>")!==false){
     62                $texte = echappe_retour($texte,"md");
     63        }
     64        return $texte;
     65}
     66
     67
     68/**
     69 * Pre-propre : traiter les raccourcis markdown
     70 * @param string $texte
     71 * @return string
     72 */
     73function markdown_pre_propre($texte){
     74        if (!class_exists("Parsedown")){
     75                include_once _DIR_PLUGIN_MARKDOWN."lib/parsedown/Parsedown.php";
     76        }
     77
     78        $texte = markdown_filtre_portions_md($texte,"markdown_raccourcis");
     79        return $texte;
     80}
     81function markdown_raccourcis($texte){
     82
     83        // redresser les raccourcis liens moisis par les autoliens
     84        $md = preg_replace_callback(",(\[[^]]*\])\((<a[^)]*</a>)\),Uims","markdown_link_repair",$texte);
     85
     86        // parser le markdown
     87        $md = Parsedown::instance()->parse($md);
     88        //var_dump($md);
     89
     90        // echapper le markdown
     91        return code_echappement($md);
     92}
     93function markdown_link_repair($r){
     94        $href = extraire_attribut($r[2],"href");
     95        return $r[1]."($href)";
     96}
     97
     98
     99/*
     100 * DEBUG
     101$apres = Parsedown::instance()->parse($texte);
     102
     103if (_request('var_dbmarkdown') AND $apres!==$texte){
     104
     105include_once _DIR_PLUGIN_MARKDOWN.'lib/finediff.php';
     106$diff = new FineDiff($texte, $apres);
     107var_dump($apres);
     108echo "<style>
     109del {
     110background: none repeat scroll 0 0 #FFDDDD;
     111color: #FF0000;
     112text-decoration: none;
     113}
     114ins {
     115background: none repeat scroll 0 0 #DDFFDD;
     116color: #008000;
     117text-decoration: none;
     118}
     119</style>";
     120echo "<pre>".$diff->renderDiffToHTML()."</pre>";
     121die();
     122}*/
     123
    27124?>
  • _plugins_/markdown/branches/v0.12.0/paquet.xml

    r82482 r82483  
    22        prefix="markdown"
    33        categorie="edition"
    4         version="0.1.0"
     4        version="0.2.0"
    55        etat="experimental"
    66        compatibilite="[3.0.0;3.0.*]"
     
    1818        <licence>GNU/GPL</licence>
    1919
     20        <pipeline nom="pre_typo" />
     21        <pipeline nom="post_typo" />
    2022</paquet>
Note: See TracChangeset for help on using the changeset viewer.