1<?php
2/*************************************************************************************
3 * metapost.php
4 * -----------
5 * Author: Maxime Chupin (notezik@gmail.com)
6 * Copyright: (c) 2011 Maxime Chupin
7 * Release Version: 1.0.9.1
8 * Date Started: 2011/08/02
9 *
10 * Metapost language file for GeSHi.
11 *
12 * https://en.wikipedia.org/wiki/MetaPost
13 *
14 *************************************************************************************
15 *
16 *     This file is part of GeSHi.
17 *
18 *   GeSHi is free software; you can redistribute it and/or modify
19 *   it under the terms of the GNU General Public License as published by
20 *   the Free Software Foundation; either version 2 of the License, or
21 *   (at your option) any later version.
22 *
23 *   GeSHi is distributed in the hope that it will be useful,
24 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
25 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26 *   GNU General Public License for more details.
27 *
28 *   You should have received a copy of the GNU General Public License
29 *   along with GeSHi; if not, write to the Free Software
30 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
31 *
32 ************************************************************************************/
33
34$language_data = array (
35    'LANG_NAME' => 'MetaPost',
36    'COMMENT_SINGLE' => array(1 => '%'),
37    'COMMENT_MULTI' => array(
38        'verbatim'=>'etex', //TeX and LaTeX preambule
39        'btex' => 'etex' //TeX invocation
40    ),
41    'COMMENT_REGEXP' => array(
42    ),
43    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
44    'QUOTEMARKS' => array('"'),
45    'ESCAPE_CHAR' => '',
46    'KEYWORDS' => array(
47        1 => array( //type
48            'boolean',
49            'color', 'cmykcolor',
50            'expr',
51            'numeric',
52            'pair', 'path', 'pen', 'picture',
53            'string', 'suffix',
54            'text', 'transform',
55        ),
56        2 => array( //file construction
57            'beginfig', 'begingroup',
58            'def',
59            'end', 'enddef', 'endfig', 'endgroup',
60            'hide',
61            'image', 'input',
62            'let',
63            'makepen', 'makepath',
64            'newinternal',
65            'primary', 'primarydef',
66            'save', 'secondarydef', 'shipout', 'special',
67            'tertiarydef',
68            'vardef'
69        ),
70        3 => array( //programmation structure
71            'else', 'elseif', 'endfor', 'exitif', 'exitunless',
72            'fi', 'for', 'forever', 'forsuffix',
73            'if',
74            'step',
75            'until', 'upto',
76        ),
77        4 => array( //operations return pair
78            'bot',
79            'dir', 'direction of',
80            'intersectionpoint', 'intiersectiontimes',
81            'lft', 'llcorner', 'lrcorner',
82            'penoffset of', 'point of', 'postcontrol of', 'precontrol of',
83            'rt',
84            'top',
85            'ulcorner', 'unitvector', 'urcorner',
86            'z',
87        ),
88        5 => array( //operations return path or picture or pen
89            'bbox',
90            'center', 'cutafter', 'cutbefore',
91            'dashpart', 'dashpattern',
92            'glyph of',
93            'infont',
94            'pathpart', 'penpart',
95            'reverse',
96            'subpath of',
97        ),
98        6 => array( //operations return string (or complementary)
99            'closefrom',
100            'fontpart',
101            'readfrom',
102            'str', 'substring of',
103            'textpart'
104        ),
105        7 => array( // operations return numeric
106            'abs', 'angle', 'arclength', 'arctime of', 'ASCII',
107            'blackpart', 'bluepart',
108            'ceiling', 'char', 'colormodel', 'cosd', 'cyanpart',
109            'decimal', 'decr', 'directionpoint of', 'directiontime of',
110            'div', 'dotprod',
111            'floor', 'fontsize',
112            'greenpart', 'greypart',
113            'hex',
114            'incr',
115            'length',
116            'magentapart', 'max', 'mexp', 'min', 'mlog', 'mod',
117            'normaldeviate',
118            'oct',
119            'redpart', 'round',
120            'sind', 'sqrt',
121            'uniformdeviate',
122            'xpart', 'xxpart', 'xypart',
123            'yellowpart', 'ypart', 'yxpart', 'yypart',
124        ),
125        8 => array( // operations return boolean
126            'and',
127            'bounded',
128            'clipped',
129            'filled',
130            'known',
131            'not',
132            'odd',
133            'or',
134            'rgbcolor',
135            'stroked',
136            'textual',
137            'unknown'
138        ),
139        9 => array( //operations return color
140            'colorpart'
141        ),
142        10 => array( //operations return transform
143            'inverse'
144        ),
145        11 => array( //constructors
146            'also',
147            'buildcycle',
148            'contour', 'controls', 'cycle',
149            'doublepath',
150            'setbounds',
151            'to',
152            'whatever'
153        ),
154        12 => array( //labels
155            'label',
156            'label.bot',
157            'label.top',
158            'label.llft',
159            'label.lft',
160            'label.ulft',
161            'label.lrt',
162            'label.rt',
163            'label.urt',
164
165            'labels',
166            'labels.bot',
167            'labels.top',
168            'labels.llft',
169            'labels.lft',
170            'labels.ulft',
171            'labels.lrt',
172            'labels.rt',
173            'labels.urt',
174
175            'thelabel',
176            'thelabel.bot',
177            'thelabel.top',
178            'thelabel.llft',
179            'thelabel.lft',
180            'thelabel.ulft',
181            'thelabel.lrt',
182            'thelabel.rt',
183            'thelabel.urt',
184
185            'dotlabel',
186            'dotlabel.bot',
187            'dotlabel.top',
188            'dotlabel.llft',
189            'dotlabel.lft',
190            'dotlabel.ulft',
191            'dotlabel.lrt',
192            'dotlabel.rt',
193            'dotlabel.urt',
194        ),
195        13 => array( //general transformations
196            'about',
197            'reflected', 'reflectedaround',
198            'rotated', 'rotatedabout', 'rotatedaround',
199            'scaled', 'slanted', 'shifted',
200            'transformed',
201            'xscaled',
202            'yscaled',
203            'zscaled',
204        ),
205        14 => array( //draw instructions
206            'addto',
207            'clip', 'cutdraw',
208            'draw', 'drawarrow', 'drawdblarrow', 'drawdot',
209            'fill', 'filldraw',
210            'undraw', 'unfill', 'unfilldraw'
211        ),
212        15 => array( //style of drawing
213            'curl',
214            'dashed', 'drawoptions',
215            'pickup',
216            'tension',
217            'withcmykcolor', 'withcolor',
218            'withgreyscale', 'withpen', 'withpostscript', 'withprescript',
219            'withrgbcolor',
220        ),
221        16 => array( //read write show
222            'errhelp', 'errmessage',
223            'fontmapfile', 'fontmapline',
224            'interim',
225            'loggingall',
226            'message',
227            'scantokens', 'show', 'showdependencies', 'showtoken', 'showvariable',
228            'tracingall', 'tracingnone',
229            'write to',
230        ),
231        17 => array( //Internal variables with numeric values
232            'ahangle', 'ahlength',
233            'bboxmargin',
234            'charcode',
235            'day', 'defaultcolormodel', 'defaultpen', 'defaultscale',
236            'dotlabeldiam',
237            'hour',
238            'labeloffset',
239            'linecap', 'linejoin',
240            'minute', 'miterlimit', 'month', 'mpprocset',
241            'pausing', 'prologues',
242            'restoreclipcolor',
243            'showstopping',
244            'time',
245            'tracingcapsules', 'tracingchoices', 'tracingcommands',
246            'tracingequations', 'tracinglostchars', 'tracingmacros',
247            'tracingonline', 'tracingoutput', 'tracingrestores',
248            'tracingspecs', 'tracingstats', 'tracingtitles',
249            'troffmode', 'truecorners',
250            'warningcheck',
251            'year',
252        ),
253        18 => array( //Internal string variables
254            'filenametemplate',
255            'jobname',
256            'outputformat', 'outputtemplate',
257        ),
258        19 => array( //other predefined variables
259            'background',
260            'currentpen', 'currentpicture', 'cuttings',
261            'defaultfont',
262            'extra_beginfig', 'extra_endfig',
263        ),
264        20 => array( //predefined constants
265            'beveled', 'black', 'blue', 'bp', 'butt',
266            'cc', 'cm',
267            'dd', 'ditto', 'down',
268            'epsilon', 'evenly', 'EOF',
269            'false', 'fullcircle',
270            'green',
271            'halfcircle',
272            'identity',
273            'left',
274            'mitered', 'mm', 'mpversion',
275            'nullpen', 'nullpicture',
276            'origin',
277            'pc', 'pencircle', 'pensquare', 'pt',
278            'quartercircle',
279            'red', 'right', 'rounded',
280            'squared',
281            'true',
282            'unitsquare', 'up',
283            'white', 'withdots',
284        )
285    ),
286    'SYMBOLS' => array(
287        '&', ':=', '=', '+', '-',
288        '*', '**', '/', '++', '+-+',
289        '<', '>', '>=', '<=', '<>',
290        '#@', '@', '@#'
291    ),
292    'CASE_SENSITIVE' => array(
293        GESHI_COMMENTS => false,
294        1 => true,
295        2 => true,
296        3 => true,
297        4 => true,
298        5 => true,
299        6 => true,
300        7 => true,
301        8 => true,
302        9 => true,
303        10 => true,
304        11 => true,
305        12 => true,
306        13 => true,
307        14 => true,
308        15 => true,
309        16 => true,
310        17 => true,
311        18 => true,
312        19 => true,
313        20 => true
314    ),
315    'STYLES' => array(
316        'KEYWORDS' => array(
317            1  => 'color: #472;', //type
318            2  => 'color: #35A;font-weight: bold;', //file construction
319            3  => 'color: #A53;', //structure
320            4  => 'color: #35A;', //operations return pair
321            5  => 'color: #35A;', //operations return path or picture or pen
322            6  => 'color: #35A;', //operations return string
323            7  => 'color: #35A;', //operations return numeric
324            8  => 'color: #35A;', //operations return boolean
325            9  => 'color: #35A;', //operations return color
326            10 => 'color: #35A;', //operations return transform
327            11 => 'color: #35A;', //constructors
328            12 => 'color: #35A;', //labels
329            13 => 'color: #3B5;', //general transformations
330            14 => 'color: #35A;', //draw instructions
331            15 => 'color: #472;', //style of drawing
332            16 => 'color: #000;', //read write show
333            17 => 'color: #000;', //Internal variables with numeric values
334            18 => 'color: #000;', //Internal string variables
335            19 => 'color: #000;', //other predefined variables
336            20 => 'color: #000;'  //predefined constants
337        ),
338        'COMMENTS' => array(
339            1 => 'color: #777;',
340            'MULTI' => 'color: #880;'
341        ),
342        'ESCAPE_CHAR' => array(
343            0 => ''
344        ),
345        'BRACKETS' => array(
346            0 => 'color: #820;'
347        ),
348        'STRINGS' => array(
349            0 => 'color: #880;'
350        ),
351        'NUMBERS' => array(
352            0 => 'color: #000;'
353        ),
354        'METHODS' => array(
355            1 => '',
356            2 => ''
357        ),
358        'SYMBOLS' => array(
359            0 => 'color: #000;'
360        ),
361        'REGEXPS' => array(
362        ),
363        'SCRIPT' => array(
364            0 => ''
365        )
366    ),
367    'URLS' => array(
368        1 => '',
369        2 => '',
370        3 => '',
371        4 => '',
372        5 => '',
373        6 => '',
374        7 => '',
375        8 => '',
376        9 => '',
377        10 => '',
378        11 => '',
379        12 => '',
380        13 => '',
381        14 => '',
382        15 => '',
383        16 => '',
384        17 => '',
385        18 => '',
386        19 => '',
387        20 => ''
388    ),
389    'OOLANG' => false,
390    'OBJECT_SPLITTERS' => array(
391    ),
392    'REGEXPS' => array(
393    ),
394    'STRICT_MODE_APPLIES' => GESHI_NEVER,
395    'SCRIPT_DELIMITERS' => array(
396    ),
397    'HIGHLIGHT_STRICT_BLOCK' => array(
398    )
399);
400