Changeset 61635 in spip-zone


Ignore:
Timestamp:
May 24, 2012, 1:16:59 PM (7 years ago)
Author:
marcimat@…
Message:

Corriger les <code class='spip'> est bien complexe !
Il faut un peu plus surcharger geshi qui mélange un peu tout dans sa fonction d'analyse de 300 lignes.
On en extrait un bout que l'on surcharge avec notre classe SPIP et on appele comme pour les <cadre> les fonctions spécifiques au colorieur SPIP sur certaines déclarations de regexp (ce qui n'était pas fait avec <code>) donc.

Location:
_plugins_/coloration_code/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/coloration_code/trunk/coloration_code_fonctions.php

    r61092 r61635  
    129129          $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
    130130        } else {
    131           $spip_cadre = '';
     131          $spip_cadre = ' ';
    132132          $geshi->set_header_type(GESHI_HEADER_NONE);
    133133          $geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS);
  • _plugins_/coloration_code/trunk/geshi/geshi.php

    r61129 r61635  
    28382838                        continue;
    28392839                    } else {
     2840
    28402841                        //Have a look for regexp comments
    28412842                        if ($i == $next_comment_regexp_pos) {
     
    32943295    }
    32953296
     3297
     3298        /**
     3299         * [Surcharge de Geshi]
     3300         *
     3301        **/
     3302        function handle_singleline_regexps($stuff_to_parse, $regexp, $key) {
     3303                $stuff_to_parse = preg_replace(
     3304                        '/' . $regexp[GESHI_SEARCH] . '/' . $regexp[GESHI_MODIFIERS],
     3305                        $regexp[GESHI_BEFORE] . '<|!REG3XP'. $key .'!>' . $regexp[GESHI_REPLACE] . '|>' . $regexp[GESHI_AFTER],
     3306                        $stuff_to_parse);
     3307                return $stuff_to_parse;
     3308        }
     3309
     3310
     3311
    32963312    /**
    32973313     * handles newlines in REGEXPS matches. Set the _hmr_* vars before calling this
     
    34253441                        $this->_hmr_after = '';
    34263442                    } else {
     3443                        // [surcharge de GESHI]
     3444                        // pour passer dans une methode
     3445                        // (qui permet donc une surcharge de juste la methode)
     3446                        /*
    34273447                        $stuff_to_parse = preg_replace(
    34283448                            '/' . $regexp[GESHI_SEARCH] . '/' . $regexp[GESHI_MODIFIERS],
    34293449                            $regexp[GESHI_BEFORE] . '<|!REG3XP'. $key .'!>' . $regexp[GESHI_REPLACE] . '|>' . $regexp[GESHI_AFTER],
    34303450                            $stuff_to_parse);
     3451                        */
     3452                        $stuff_to_parse = $this->handle_singleline_regexps($stuff_to_parse, $regexp, $key);
    34313453                    }
    34323454                } else {
  • _plugins_/coloration_code/trunk/geshi/geshi/spip2.php

    r61172 r61635  
    257257function spip2_geshi_regexp_echappements_remettre_callback($matches, $geshi) {
    258258        $contenu = $matches[0];
    259 
    260259        $inerte = '-INERTE';
    261260        $key = $geshi->_hmr_key;
  • _plugins_/coloration_code/trunk/inc/spip_geshi.php

    r60666 r61635  
    1414
    1515class SPIP_GeSHi extends GeSHi {
     16
     17        // fonction de traitement de certaines regexp spip
     18        var $_hmr_func = '';
    1619
    1720        /**
     
    6467                return parent::handle_multiline_regexps($matches);
    6568        }
     69
     70
     71        /**
     72         * Cette surcharge d'une surcharge de Geshi
     73         * implemente pour le non multiligne la meme chose que
     74         * pour handle_multiline_regexps() du dessus
     75         *
     76        **/
     77        function handle_singleline_regexps($stuff_to_parse, $regexp, $key) {
     78
     79                if (    isset($regexp[SPIP_GESHI_REGEXP_FUNCTION])
     80                  and $func = $regexp[SPIP_GESHI_REGEXP_FUNCTION]) {
     81
     82                        $this->_hmr_key  = $key;
     83                        $this->_hmr_func = $func;
     84
     85                        $stuff_to_parse = preg_replace_callback(
     86                                '/' . $regexp[GESHI_SEARCH] . '/' . $regexp[GESHI_MODIFIERS],
     87                                array($this, 'handle_singleline_regexps_bis'),
     88                                $stuff_to_parse);
     89
     90                        $this->_hmr_func = '';
     91
     92                        return $stuff_to_parse;
     93                }
     94
     95                return parent::handle_singleline_regexps($stuff_to_parse, $regexp, $key);
     96        }
     97
     98
     99
     100        /**
     101         * Renvoyer sur la fonction du colorieur SPIP demandee
     102         *
     103        **/
     104        function handle_singleline_regexps_bis($matches) {
     105                $func = $this->_hmr_func;
     106                return $func($matches, $this);
     107        }
     108
    66109}
    67110
Note: See TracChangeset for help on using the changeset viewer.