ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
twig.php
Go to the documentation of this file.
1 <?php
2 /*************************************************************************************
3  * twig.php
4  * ----------
5  * Author: Keyvan Akbary (keyvan@kiwwito.com)
6  * Copyright: (c) 2011 Keyvan Akbary (http://www.kiwwito.com/)
7  * Release Version: 1.0.9.0
8  * Date Started: 2011/12/05
9  *
10  * Twig template language file for GeSHi.
11  *
12  * CHANGES
13  * -------
14  * 2012/09/28 (1.9.0 by José Andrés Puertas y Javier Eguiluz)
15  * - Added new tags, filters and functions
16  * - Added regexps for variables, objects and properties
17  * - Lots of other minor tweaks (delimites, comments, ...)
18  *
19  * 2011/12/05 (1.0.0 by Keyvan Akbary)
20  * - Initial Release
21  *
22  * TODO
23  * ----
24  *
25  *************************************************************************************
26  *
27  * This file is part of GeSHi.
28  *
29  * GeSHi is free software; you can redistribute it and/or modify
30  * it under the terms of the GNU General Public License as published by
31  * the Free Software Foundation; either version 2 of the License, or
32  * (at your option) any later version.
33  *
34  * GeSHi is distributed in the hope that it will be useful,
35  * but WITHOUT ANY WARRANTY; without even the implied warranty of
36  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
37  * GNU General Public License for more details.
38  *
39  * You should have received a copy of the GNU General Public License
40  * along with GeSHi; if not, write to the Free Software
41  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
42  *
43  ************************************************************************************/
44 
46  'LANG_NAME' => 'Twig',
47  'COMMENT_SINGLE' => array(),
48  'COMMENT_MULTI' => array('{#' => '#}'),
49  'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
50  'QUOTEMARKS' => array("'", '"'),
51  'ESCAPE_CHAR' => '',
52  'KEYWORDS' => array(
53  //TWIG
54  //Tags
55  1 => array(
56  'autoescape',
57  'endautoescape',
58  'block',
59  'endblock',
60  'do',
61  'embed',
62  'endembed',
63  'extends',
64  'filter',
65  'endfilter',
66  'for',
67  'endfor',
68  'from',
69  'if',
70  'else',
71  'elseif',
72  'endif',
73  'import',
74  'include',
75  'macro',
76  'endmacro',
77  'raw',
78  'endraw',
79  'sandbox',
80  'set',
81  'endset',
82  'spaceless',
83  'endspaceless',
84  'use',
85  'verbatim',
86  'endverbatim',
87  'trans',
88  'endtrans',
89  'transchoice',
90  'endtranschoice'
91  ),
92  //Filters
93  2 => array(
94  'abs',
95  'batch',
96  'capitalize',
97  'convert_encoding',
98  'date',
99  'date_modify',
100  'default',
101  'escape',
102  'first',
103  'format',
104  'join',
105  'json_encode',
106  'keys',
107  'last',
108  'length',
109  'lower',
110  'merge',
111  'nl2br',
112  'number_format',
113  'replace',
114  'reverse',
115  'slice',
116  'sort',
117  'split',
118  'striptags',
119  'title',
120  'trim',
121  'upper',
122  'url_encode'
123  ),
124  //Functions
125  3 => array(
126  'attribute',
127  'cycle',
128  'dump',
129  'parent',
130  'random',
131  'range',
132  'source',
133  'template_from_string'
134  ),
135  //Tests
136  4 => array(
137  'constant',
138  'defined',
139  'divisibleby',
140  'empty',
141  'even',
142  'iterable',
143  'null',
144  'odd',
145  'sameas'
146  ),
147  //Operators
148  5 => array(
149  'in',
150  'is',
151  'and',
152  'b-and',
153  'or',
154  'b-or',
155  'b-xor',
156  'not',
157  'into',
158  'starts with',
159  'ends with',
160  'matches'
161  )
162  ),
163  'SYMBOLS' => array(
164  '{{',
165  '}}',
166  '{%',
167  '%}',
168  '+',
169  '-',
170  '/',
171  '/',
172  '*',
173  '**', //Math operators
174  '==',
175  '!=',
176  '<',
177  '>',
178  '>=',
179  '<=',
180  '===', //Logic operators
181  '..',
182  '|',
183  '~',
184  '[',
185  ']',
186  '.',
187  '?',
188  ':',
189  '(',
190  ')', //Other
191  '=' //HTML (attributes)
192  ),
193  'CASE_SENSITIVE' => array(
194  GESHI_COMMENTS => false,
195  //Twig
196  1 => true,
197  2 => true,
198  3 => true,
199  4 => true,
200  5 => true
201  ),
202  'STYLES' => array(
203  'KEYWORDS' => array(
204  1 => 'color: #0600FF;', //Tags
205  2 => 'color: #008000;', //Filters
206  3 => 'color: #0600FF;', //Functions
207  4 => 'color: #804040;', //Tests
208  5 => 'color: #008000;'
209  ),
210  'COMMENTS' => array(
211  'MULTI' => 'color: #008080; font-style: italic;'
212  ),
213  'ESCAPE_CHAR' => array(
214  0 => 'color: #000099; font-weight: bold;'
215  ),
216  'BRACKETS' => array(
217  0 => 'color: #D36900;'
218  ),
219  'STRINGS' => array(
220  0 => 'color: #ff0000;'
221  ),
222  'NUMBERS' => array(
223  0 => 'color: #cc66cc;'
224  ),
225  'METHODS' => array(
226  1 => 'color: #006600;'
227  ),
228  'SYMBOLS' => array(
229  0 => 'color: #D36900;'
230  ),
231  'SCRIPT' => array(
232  0 => '',
233  1 => 'color: #808080; font-style: italic;',
234  2 => 'color: #009000;'
235  ),
236  'REGEXPS' => array(
237  0 => 'color: #00aaff;',
238  1 => 'color: #00aaff;'
239  )
240  ),
241  'URLS' => array(
242  1 => 'http://twig.sensiolabs.org/doc/tags/{FNAMEL}.html',
243  2 => 'http://twig.sensiolabs.org/doc/filters/{FNAMEL}.html',
244  3 => 'http://twig.sensiolabs.org/doc/functions/{FNAMEL}.html',
245  4 => 'http://twig.sensiolabs.org/doc/tests/{FNAMEL}.html',
246  5 => '',
247  ),
248  'OOLANG' => false,
249  'OBJECT_SPLITTERS' => array(
250  1 => '.',
251  ),
252  'REGEXPS' => array(
253  0 => array(
254  GESHI_SEARCH => "([[:space:]])([a-zA-Z_][a-zA-Z0-9_]*)",
255  GESHI_REPLACE => '\\2',
256  GESHI_MODIFIERS => '',
257  GESHI_BEFORE => '\\1',
258  GESHI_AFTER => ''
259  ),
260  1 => array(
261  GESHI_SEARCH => "\.([a-zA-Z_][a-zA-Z0-9_]*)",
262  GESHI_REPLACE => '.\\1',
263  GESHI_MODIFIERS => '',
264  GESHI_BEFORE => '',
265  GESHI_AFTER => ''
266  ),
267  ),
268  'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
269  'SCRIPT_DELIMITERS' => array(
270  0 => array(
271  '{{' => '}}',
272  '{%' => '%}'
273  ),
274  1 => array(
275  '{#' => '#}',
276  )
277  ),
278  'HIGHLIGHT_STRICT_BLOCK' => array(
279  0 => true,
280  1 => true,
281  2 => true
282  ),
283  'PARSER_CONTROL' => array(
284  'KEYWORDS' => array()
285  )
286 );
const GESHI_MODIFIERS
The key of the regex array defining any modifiers to the regular expression.
Definition: geshi.php:137
const GESHI_BEFORE
The key of the regex array defining what bracket group in a matched search to put before the replacem...
Definition: geshi.php:140
const GESHI_COMMENTS
Used in language files to mark comments.
Definition: geshi.php:149
$language_data
Definition: twig.php:45
const GESHI_REPLACE
The key of the regex array defining what bracket group in a matched search to use as a replacement...
Definition: geshi.php:135
const GESHI_SEARCH
The key of the regex array defining what to search for.
Definition: geshi.php:132
const GESHI_CAPS_NO_CHANGE
Lowercase keywords found.
Definition: geshi.php:94
const GESHI_ALWAYS
Strict mode always applies.
Definition: geshi.php:128
const GESHI_AFTER
The key of the regex array defining what bracket group in a matched search to put after the replaceme...
Definition: geshi.php:143