source: spip-zone/_plugins_/coloration_code/trunk/geshi/geshi/spip3.php @ 62335

Last change on this file since 62335 was 62335, checked in by marcimat@…, 8 years ago

-Correction de notice PHP

File size: 5.6 KB
Line 
1<?php
2/*************************************************************************************
3 * spip3.php
4 * -------
5 * Author: Nigel McNie (oracle.shinoda@gmail.com)
6 * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
7 * Release Version: 1.0.8.10
8 *
9 *************************************************************************************
10 *
11 *     This file is part of GeSHi.
12 *
13 *   GeSHi is free software; you can redistribute it and/or modify
14 *   it under the terms of the GNU General Public License as published by
15 *   the Free Software Foundation; either version 2 of the License, or
16 *   (at your option) any later version.
17 *
18 *   GeSHi is distributed in the hope that it will be useful,
19 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
20 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 *   GNU General Public License for more details.
22 *
23 *   You should have received a copy of the GNU General Public License
24 *   along with GeSHi; if not, write to the Free Software
25 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
26 *
27 ************************************************************************************/
28
29
30/**
31 * Partager les styles avec public/format_html_geshi.php
32**/
33if (!function_exists('geshi_language_data_spip3_styles')) {
34function geshi_language_data_spip3_styles($export_for_keywords = false) {
35        $kws = array(
36                'KEYWORDS' => array(
37                        10 => 'color: #1D91DD;', // <boucle>
38                        11 => 'color: #527EE0;', // (TABLE)
39                        12 => 'color: #984CFF;', // {criteres}
40
41                        20 => 'color: #D05000;', // #BALISE
42                        21 => 'color: #1DA3DD;', // #x:BALISE (x:)
43                        22 => 'color: #FF4E00;', // #BALISE** (**)
44                       
45                        25 => 'color: #D05000;', // [ de [(#BALISE)]
46                        26 => 'color: #D05000;', // ( de [(#BALISE)]
47
48                        30 => 'color: #FF851D;', // |filtre
49                        31 => 'color: #74B900;', // {parametre}
50                        32 => 'color: #74B900;', // {parametre, x} (parametre et x)
51
52                        40 => 'color: #EB2D2B;', // <INCLURE />
53                        41 => 'color: #6B3635;', // <INCLURE(fichier) /> fichier
54
55                        50 => 'color: #9B7400;', // polyglotte <multi>
56                        51 => 'color: #9B7400;', // polyglotte [en]
57                        52 => 'color: #666;', // polyglotte contenu
58
59                        60 => 'color: #9B7400;', // <: idiome :> (<: :>)
60                        61 => 'color: #9B7400;', // <: module : idiome :> (module)
61                        62 => 'color: #C90;', // <: chaine :> (chaine)
62
63                        70 => 'color: #FF67BF; font-weight:bold;', // operateurs =
64
65                        80 => '', // nombre 12
66                ),
67                'COMMENTS' => array(
68                        'MULTI' => 'color: #808080; font-style: italic;'
69                        ),
70                'ESCAPE_CHAR' => array(
71                        0 => 'color: #000099; font-weight: bold;'
72                        ),
73                'BRACKETS' => array(),
74                'STRINGS' => array(),
75                'NUMBERS' => array(),
76                'METHODS' => array(),
77                'SYMBOLS' => array(),
78                'SCRIPT' => array(),
79                'REGEXPS' => array()
80        );
81
82        if (!$export_for_keywords) {
83                return $kws;
84        }
85
86        // un bazar pour les classes css
87        // pour avoir un tableau avec toutes les cles de keywords
88        // valides (meme si le mot est lui non trouve)
89        // afin que geshi ajoute les classes CSS / styles dans la feuille de style
90        // generee.
91        $keywords = array();
92        foreach ($kws['KEYWORDS'] as $k=>$null) {
93                $keywords[$k] = array('@#@#@'); // un mot qu'on ne rencontrera pas.
94        }
95        return $keywords;
96}
97}
98
99
100
101$language_data = array (
102        'LANG_NAME' => 'SPIP',
103        'COMMENT_SINGLE' => array(),
104        'COMMENT_MULTI' => array(),
105        'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
106
107        // fonction d'analyse du code a colorier
108        'SPIP_GESHI_COLOR_FUNCTION' => 'geshi_spip3_colorier',
109        'PARSER_CONTROL' => array(
110                'ENABLE_FLAGS' => array(
111                        'BRACKETS' => GESHI_NEVER, // le colorieur s'occupera des [](){} !
112                        'NUMBERS'  => GESHI_NEVER, // le colorieur s'occupera des 123 (ou pas !)
113                        #'KEYWORDS' => GESHI_NEVER, // il les faut pour les classes css :(
114        )),
115
116        'QUOTEMARKS' => array(),
117        'ESCAPE_CHAR' => '',
118        // pour que les classes CSS s'ajoutent :(
119        // lorsque qu'on les demande avec define('PLUGIN_COLORATION_CODE_STYLES_INLINE', false);
120        'KEYWORDS' => geshi_language_data_spip3_styles(true),
121        'SYMBOLS' => array(),
122        'CASE_SENSITIVE' => array(
123                GESHI_COMMENTS => false,
124                ),
125        'STYLES' => geshi_language_data_spip3_styles(),
126        'URLS' => array(),
127        'OOLANG' => false,
128        'OBJECT_SPLITTERS' => array(),
129
130        'REGEXPS' => array(),
131
132        'STRICT_MODE_APPLIES' => GESHI_NEVER,
133        'SCRIPT_DELIMITERS' => array(),
134
135        'HIGHLIGHT_STRICT_BLOCK' => array()
136);
137
138
139/**
140 * Colorie un code au format SPIP (extension html)
141 *
142 * @param string $contenu
143 *              Le code a colorier
144 * @return string
145 *              Le code modifie en ajoutant des <| class="br0">xxx|>
146 *              Indiquant les classes utilisees pour colorier les morceaux de code.
147**/
148if (!function_exists('geshi_spip3_colorier')) {
149function geshi_spip3_colorier($contenu) {
150
151        // phraser le squelette en question
152        // on obtient alors un arbre de syntaxe abstraite
153        $boucles = array();
154        $descr = array(
155                'nom' => 'geshi_spip3',
156                'gram' => 'html',
157                'sourcefile' => '',
158                'squelette' => ''
159        );
160
161        $squelette = $contenu; // code a traiter
162
163        // rendre inertes les echappements de #[](){}<>
164        $i = 0;
165        while(false !== strpos($squelette, $inerte = '-INERTE'.$i)) $i++;
166        $squelette = preg_replace_callback(',\\\\([#[()\]{}<>]),',
167                create_function('$a', "return '$inerte-'.ord(\$a[1]).'-';"), $squelette, -1, $esc);
168
169
170        $phraser = charger_fonction('phraser_html', 'public');
171        $boucles = $phraser($squelette, '', $boucles, $descr);
172
173        // decompiler l'arbre pour obtenir une nouvelle syntaxe concrete
174        // dans la grammaire choisie
175        include_spip('public/decompiler');
176        $contenu = public_decompiler($boucles, 'html_geshi');
177
178        // restituer les echappements
179        if ($esc) {
180                $contenu = preg_replace_callback(",$inerte-(\d+)-,", create_function('$a', 'return "\\\\" . chr($a[1]);'), $contenu);
181        }
182
183        return $contenu;
184}
185}
186
187?>
Note: See TracBrowser for help on using the repository browser.