1<?php
2/*************************************************************************************
3 * roff.php
4 * ---------------------------------
5 * Author: Artur Iwicki (iwicki DOT artur AT svgames DOT pl)
6 * Copyright: (c) 2017 Artur Iwicki
7 * Release Version: 1.0.9.1
8 * Date Started: 2017-11-17
9 *
10 * roff (Unix man page) language file for GeSHi.
11 *
12 * CHANGES
13 * -------
14 * 2018-12-06 (1.0.1)
15 *  - Fix reqex for line-start requests (must start with [.'], not [\.'])
16 *  - Add some missing whitespace escapes
17 * 2017-11-20 (1.0.0)
18 *  - First Release
19 *
20 *************************************************************************************
21 *
22 *     This file is part of GeSHi.
23 *
24 *   GeSHi is free software; you can redistribute it and/or modify
25 *   it under the terms of the GNU General Public License as published by
26 *   the Free Software Foundation; either version 2 of the License, or
27 *   (at your option) any later version.
28 *
29 *   GeSHi is distributed in the hope that it will be useful,
30 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
31 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
32 *   GNU General Public License for more details.
33 *
34 *   You should have received a copy of the GNU General Public License
35 *   along with GeSHi; if not, write to the Free Software
36 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
37 *
38 ************************************************************************************/
39
40$language_data = array (
41    'LANG_NAME' => 'roff',
42    'COMMENT_SINGLE' => array(
43        1 => '\\"',
44        2 => '\\#',
45        ),
46    'COMMENT_MULTI' => array(),
47    'COMMENT_REGEXP' => array(
48        1 => '/^\\.\\\\"[[:print:]]*/m'
49        ),
50    'QUOTEMARKS' => array(),
51    'ESCAPE_CHAR' => '',
52    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
53    'CASE_SENSITIVE' => array(
54        GESHI_COMMENTS => false,
55        ),
56    'KEYWORDS' => array(
57        ),
58    'SYMBOLS' => array(
59        0 => array(
60            '\\[-D]',    '\\(-D',
61            '\\[Sd]',    '\\(Sd',
62            '\\[TP]',    '\\(TP',
63            '\\[Tp]',    '\\(Tp',
64            '\\[ss]',    '\\(ss',
65            '\\[ff]',    '\\(ff',
66            '\\[fi]',    '\\(fi',
67            '\\[fl]',    '\\(fl',
68            '\\[Fi]',    '\\(Fi',
69            '\\[Fl]',    '\\(Fl',
70            '\\[/L]',    '\\(/L',
71            '\\[/l]',    '\\(/l',
72            '\\[/O]',    '\\(/O',
73            '\\[/o]',    '\\(/o',
74            '\\[AE]',    '\\(AE',
75            '\\[ae]',    '\\(ae',
76            '\\[OE]',    '\\(OE',
77            '\\[oe]',    '\\(oe',
78            '\\[IJ]',    '\\(IJ',
79            '\\[ij]',    '\\(ij',
80            '\\[.i]',    '\\(.i',
81            '\\[.j]',    '\\(.j',
82            '\\[\'A]',    '\\(\'A',
83            '\\[\'C]',    '\\(\'C',
84            '\\[\'E]',    '\\(\'E',
85            '\\[\'I]',    '\\(\'I',
86            '\\[\'O]',    '\\(\'O',
87            '\\[\'U]',    '\\(\'U',
88            '\\[\'Y]',    '\\(\'Y',
89            '\\[\'a]',    '\\(\'a',
90            '\\[\'c]',    '\\(\'c',
91            '\\[\'e]',    '\\(\'e',
92            '\\[\'i]',    '\\(\'i',
93            '\\[\'o]',    '\\(\'o',
94            '\\[\'u]',    '\\(\'u',
95            '\\[\'y]',    '\\(\'y',
96            '\\[:A]',    '\\(:A',
97            '\\[:E]',    '\\(:E',
98            '\\[:I]',    '\\(:I',
99            '\\[:O]',    '\\(:O',
100            '\\[:U]',    '\\(:U',
101            '\\[:Y]',    '\\(:Y',
102            '\\[:a]',    '\\(:a',
103            '\\[:e]',    '\\(:e',
104            '\\[:i]',    '\\(:i',
105            '\\[:o]',    '\\(:o',
106            '\\[:u]',    '\\(:u',
107            '\\[:y]',    '\\(:y',
108            '\\[^A]',    '\\(^A',
109            '\\[^E]',    '\\(^E',
110            '\\[^I]',    '\\(^I',
111            '\\[^O]',    '\\(^O',
112            '\\[^U]',    '\\(^U',
113            '\\[^a]',    '\\(^a',
114            '\\[^e]',    '\\(^e',
115            '\\[^i]',    '\\(^i',
116            '\\[^o]',    '\\(^o',
117            '\\[^u]',    '\\(^u',
118            '\\[`A]',    '\\(`A',
119            '\\[`E]',    '\\(`E',
120            '\\[`I]',    '\\(`I',
121            '\\[`O]',    '\\(`O',
122            '\\[`U]',    '\\(`U',
123            '\\[`a]',    '\\(`a',
124            '\\[`e]',    '\\(`e',
125            '\\[`i]',    '\\(`i',
126            '\\[`o]',    '\\(`o',
127            '\\[`u]',    '\\(`u',
128            '\\[~A]',    '\\(~A',
129            '\\[~N]',    '\\(~N',
130            '\\[~O]',    '\\(~O',
131            '\\[~a]',    '\\(~a',
132            '\\[~n]',    '\\(~n',
133            '\\[~o]',    '\\(~o',
134            '\\[vS]',    '\\(vS',
135            '\\[vs]',    '\\(vs',
136            '\\[vZ]',    '\\(vZ',
137            '\\[vz]',    '\\(vz',
138            '\\[,C]',    '\\(,C',
139            '\\[,c]',    '\\(,c',
140            '\\[oA]',    '\\(oA',
141            '\\[oa]',    '\\(oa',
142            '\\[a"]',    '\\(a"',
143            '\\[a-]',    '\\(a-',
144            '\\[a.]',    '\\(a.',
145            '\\[a^]',    '\\(a^',
146            '\\[aa]',    '\\(aa',
147            '\\[ga]',    '\\(ga',
148            '\\[ab]',    '\\(ab',
149            '\\[ac]',    '\\(ac',
150            '\\[ad]',    '\\(ad',
151            '\\[ah]',    '\\(ah',
152            '\\[ao]',    '\\(ao',
153            '\\[a~]',    '\\(a~',
154            '\\[ho]',    '\\(ho',
155            '\\[ha]',    '\\(ha',
156            '\\[ti]',    '\\(ti',
157            '\\[Bq]',    '\\(Bq',
158            '\\[bq]',    '\\(bq',
159            '\\[lq]',    '\\(lq',
160            '\\[rq]',    '\\(rq',
161            '\\[oq]',    '\\(oq',
162            '\\[cq]',    '\\(cq',
163            '\\[aq]',    '\\(aq',
164            '\\[dq]',    '\\(dq',
165            '\\[Fo]',    '\\(Fo',
166            '\\[Fc]',    '\\(Fc',
167            '\\[fo]',    '\\(fo',
168            '\\[fc]',    '\\(fc',
169            '\\[r!]',    '\\(r!',
170            '\\[r?]',    '\\(r?',
171            '\\[em]',    '\\(em',
172            '\\[en]',    '\\(en',
173            '\\[hy]',    '\\(hy',
174            '\\[lB]',    '\\(lB',
175            '\\[rB]',    '\\(rB',
176            '\\[lC]',    '\\(lC',
177            '\\[rC]',    '\\(rC',
178            '\\[la]',    '\\(la',
179            '\\[ra]',    '\\(ra',
180            '\\[bv]',    '\\(bv',
181            '\\[braceex]',
182            '\\[bracketlefttp]',
183            '\\[bracketleftbt]',
184            '\\[bracketleftex]',
185            '\\[bracketrighttp]',
186            '\\[bracketrightbt]',
187            '\\[bracketrightex]',
188            '\\[lt]',    '\\(lt',
189            '\\[bracelefttp]',
190            '\\[lk]',    '\\(lk',
191            '\\[braceleftmid]',
192            '\\[lb]',    '\\(lb',
193            '\\[braceleftbt]',
194            '\\[braceleftex]',
195            '\\[rt]',    '\\(rt',
196            '\\[bracerighttp]',
197            '\\[rk]',    '\\(rk',
198            '\\[bracerightmid]',
199            '\\[rb]',    '\\(rb',
200            '\\[bracerightbt]',
201            '\\[bracerightex]',
202            '\\[parenlefttp]',
203            '\\[parenleftbt]',
204            '\\[parenleftex]',
205            '\\[parenrighttp]',
206            '\\[parenrightbt]',
207            '\\[parenrightex]',
208            '\\[&lt;-]',    '\\(&lt;-',
209            '\\[-&gt;]',    '\\(-&gt;',
210            '\\[&lt;&gt;]',    '\\(&lt;&gt;',
211            '\\[da]',    '\\(da',
212            '\\[ua]',    '\\(ua',
213            '\\[va]',    '\\(va',
214            '\\[lA]',    '\\(lA',
215            '\\[rA]',    '\\(rA',
216            '\\[hA]',    '\\(hA',
217            '\\[dA]',    '\\(dA',
218            '\\[uA]',    '\\(uA',
219            '\\[vA]',    '\\(vA',
220            '\\[an]',    '\\(an',
221            '\\[ba]',    '\\(ba',
222            '\\[br]',    '\\(br',
223            '\\[ul]',    '\\(ul',
224            '\\[rn]',    '\\(rn',
225            '\\[ru]',    '\\(ru',
226            '\\[bb]',    '\\(bb',
227            '\\[sl]',    '\\(sl',
228            '\\[rs]',    '\\(rs',
229            '\\[ci]',    '\\(ci',
230            '\\[bu]',    '\\(bu',
231            '\\[dd]',    '\\(dd',
232            '\\[dg]',    '\\(dg',
233            '\\[lz]',    '\\(lz',
234            '\\[sq]',    '\\(sq',
235            '\\[ps]',    '\\(ps',
236            '\\[sc]',    '\\(sc',
237            '\\[lh]',    '\\(lh',
238            '\\[rh]',    '\\(rh',
239            '\\[at]',    '\\(at',
240            '\\[sh]',    '\\(sh',
241            '\\[CR]',    '\\(CR',
242            '\\[OK]',    '\\(OK',
243            '\\[co]',    '\\(co',
244            '\\[rg]',    '\\(rg',
245            '\\[tm]',    '\\(tm',
246            '\\[bs]',    '\\(bs',
247            '\\[Do]',    '\\(Do',
248            '\\[ct]',    '\\(ct',
249            '\\[eu]',    '\\(eu',
250            '\\[Eu]',    '\\(Eu',
251            '\\[Ye]',    '\\(Ye',
252            '\\[Po]',    '\\(Po',
253            '\\[Cs]',    '\\(Cs',
254            '\\[Fn]',    '\\(Fn',
255            '\\[de]',    '\\(de',
256            '\\[%0]',    '\\(%0',
257            '\\[fm]',    '\\(fm',
258            '\\[sd]',    '\\(sd',
259            '\\[mc]',    '\\(mc',
260            '\\[Of]',    '\\(Of',
261            '\\[Om]',    '\\(Om',
262            '\\[AN]',    '\\(AN',
263            '\\[OR]',    '\\(OR',
264            '\\[no]',    '\\(no',
265            '\\[tno]',
266            '\\[te]',    '\\(te',
267            '\\[fa]',    '\\(fa',
268            '\\[st]',    '\\(st',
269            '\\[3d]',    '\\(3d',
270            '\\[tf]',    '\\(tf',
271            '\\[or]',    '\\(or',
272            '\\[12]',    '\\(12',
273            '\\[14]',    '\\(14',
274            '\\[34]',    '\\(34',
275            '\\[18]',    '\\(18',
276            '\\[38]',    '\\(38',
277            '\\[58]',    '\\(58',
278            '\\[78]',    '\\(78',
279            '\\[S1]',    '\\(S1',
280            '\\[S2]',    '\\(S2',
281            '\\[S3]',    '\\(S3',
282            '\\[pl]',    '\\(pl',
283            '\\[mi]',    '\\(mi',
284            '\\[-+]',    '\\(-+',
285            '\\[+-]',    '\\(+-',
286            '\\[t+-]',
287            '\\[pc]',    '\\(pc',
288            '\\[md]',    '\\(md',
289            '\\[mu]',    '\\(mu',
290            '\\[tmu]',
291            '\\[c*]',    '\\(c*',
292            '\\[c+]',    '\\(c+',
293            '\\[di]',    '\\(di',
294            '\\[tdi]',
295            '\\[f/]',    '\\(f/',
296            '\\[**]',    '\\(**',
297            '\\[&lt;=]',    '\\(&lt;=',
298            '\\[&gt;=]',    '\\(&gt;=',
299            '\\[&lt;&lt;]',    '\\(&lt;&lt;',
300            '\\[&gt;&gt;]',    '\\(&gt;&gt;',
301            '\\[eq]',    '\\(eq',
302            '\\[!=]',    '\\(!=',
303            '\\[==]',    '\\(==',
304            '\\[ne]',    '\\(ne',
305            '\\[=~]',    '\\(=~',
306            '\\[|=]',    '\\(|=',
307            '\\[ap]',    '\\(ap',
308            '\\[~~]',    '\\(~~',
309            '\\[~=]',    '\\(~=',
310            '\\[pt]',    '\\(pt',
311            '\\[es]',    '\\(es',
312            '\\[mo]',    '\\(mo',
313            '\\[nm]',    '\\(nm',
314            '\\[sb]',    '\\(sb',
315            '\\[nb]',    '\\(nb',
316            '\\[sp]',    '\\(sp',
317            '\\[nc]',    '\\(nc',
318            '\\[ib]',    '\\(ib',
319            '\\[ip]',    '\\(ip',
320            '\\[ca]',    '\\(ca',
321            '\\[cu]',    '\\(cu',
322            '\\[/_]',    '\\(/_',
323            '\\[pp]',    '\\(pp',
324            '\\[is]',    '\\(is',
325            '\\[integral]',
326            '\\[sum]',
327            '\\[product]',
328            '\\[coproduct]',
329            '\\[gr]',    '\\(gr',
330            '\\[sr]',    '\\(sr',
331            '\\[sqrt]',
332            '\\[radicalex]',
333            '\\[sqrtex]',
334            '\\[lc]',    '\\(lc',
335            '\\[rc]',    '\\(rc',
336            '\\[lf]',    '\\(lf',
337            '\\[rf]',    '\\(rf',
338            '\\[if]',    '\\(if',
339            '\\[Ah]',    '\\(Ah',
340            '\\[Im]',    '\\(Im',
341            '\\[Re]',    '\\(Re',
342            '\\[wp]',    '\\(wp',
343            '\\[pd]',    '\\(pd',
344            '\\[-h]',    '\\(-h',
345            '\\[hbar]',
346            '\\[*A]',    '\\(*A',
347            '\\[*B]',    '\\(*B',
348            '\\[*G]',    '\\(*G',
349            '\\[*D]',    '\\(*D',
350            '\\[*E]',    '\\(*E',
351            '\\[*Z]',    '\\(*Z',
352            '\\[*Y]',    '\\(*Y',
353            '\\[*H]',    '\\(*H',
354            '\\[*I]',    '\\(*I',
355            '\\[*K]',    '\\(*K',
356            '\\[*L]',    '\\(*L',
357            '\\[*M]',    '\\(*M',
358            '\\[*N]',    '\\(*N',
359            '\\[*C]',    '\\(*C',
360            '\\[*O]',    '\\(*O',
361            '\\[*P]',    '\\(*P',
362            '\\[*R]',    '\\(*R',
363            '\\[*S]',    '\\(*S',
364            '\\[*T]',    '\\(*T',
365            '\\[*U]',    '\\(*U',
366            '\\[*F]',    '\\(*F',
367            '\\[*X]',    '\\(*X',
368            '\\[*Q]',    '\\(*Q',
369            '\\[*W]',    '\\(*W',
370            '\\[*a]',    '\\(*a',
371            '\\[*b]',    '\\(*b',
372            '\\[*g]',    '\\(*g',
373            '\\[*d]',    '\\(*d',
374            '\\[*e]',    '\\(*e',
375            '\\[*z]',    '\\(*z',
376            '\\[*y]',    '\\(*y',
377            '\\[*h]',    '\\(*h',
378            '\\[*i]',    '\\(*i',
379            '\\[*k]',    '\\(*k',
380            '\\[*l]',    '\\(*l',
381            '\\[*m]',    '\\(*m',
382            '\\[*n]',    '\\(*n',
383            '\\[*c]',    '\\(*c',
384            '\\[*o]',    '\\(*o',
385            '\\[*p]',    '\\(*p',
386            '\\[*r]',    '\\(*r',
387            '\\[ts]',    '\\(ts',
388            '\\[*s]',    '\\(*s',
389            '\\[*t]',    '\\(*t',
390            '\\[*u]',    '\\(*u',
391            '\\[*f]',    '\\(*f',
392            '\\[*x]',    '\\(*x',
393            '\\[*q]',    '\\(*q',
394            '\\[*w]',    '\\(*w',
395            '\\[+h]',    '\\(+h',
396            '\\[+f]',    '\\(+f',
397            '\\[+p]',    '\\(+p',
398            '\\[+e]',    '\\(+e',
399            '\\[CL]',    '\\(CL',
400            '\\[SP]',    '\\(SP',
401            '\\[HE]',    '\\(HE',
402            '\\[DI]',    '\\(DI',
403            ),
404        1 => array(
405            // Special characters
406            '\\\\', '\\´', '\\`', '\\-',
407            '\\_',  '\\.', '\\%', '\\!',
408            '\\0',  '\\|', '\\^', '\\&',
409            '\\)',  '\\/', '\\,', '\\~',
410            '\\:',  '\\{', '\\}', '\\a',
411            '\\c',  '\\d', '\\e', '\\E',
412            '\\p',  '\\r', '\\t', '\\u',
413
414            // Whitespace escapes
415            '\\ ', '\\h', "\\\n",
416
417            // Text modifiers
418            '\\fB', '\\fI', '\\fR', '\\fP',
419            '\\f0', '\\f1', '\\f2', '\\f3', '\\f4', '\\f5', '\\f6', '\\f7', '\\f8', '\\f9',
420            ),
421        ),
422    'STYLES' => array(
423        'KEYWORDS' => array(
424            ),
425        'COMMENTS' => array(
426            1 => 'color: #ffff55;',
427            2 => 'color: #ffff55;',
428            ),
429        'ESCAPE_CHAR' => array(
430            ),
431        'BRACKETS' => array(
432            ),
433        'STRINGS' => array(
434            ),
435        'NUMBERS' => array(
436            ),
437        'METHODS' => array(
438            ),
439        'SYMBOLS' => array(
440            0 => 'color: #00aaaa',
441            1 => 'color: #aa00aa',
442            ),
443        'REGEXPS' => array(
444            0 => 'color: #ffff55;',
445            1 => 'font-weight: bold;',
446            2 => 'font-style: italic;',
447            3 => 'font-weight: bold;',
448            4 => 'font-style: italic;',
449            5 => 'color: #55aaff;',
450            ),
451        'SCRIPT' => array(
452            )
453        ),
454    'REGEXPS' => array(
455        0 => array(
456            // Unicode characters
457            GESHI_SEARCH => '\\\\\\[u([[:xdigit:]]{4,5})\\]',
458            GESHI_REPLACE => '\\\\[\\1]',
459            GESHI_MODIFIERS => '',
460            GESHI_BEFORE => '',
461            GESHI_AFTER => '',
462            ),
463        1 => array(
464            // Bold text - formatted using .B or 'B
465            GESHI_SEARCH => "^([\\.']{1}B[[:blank:]]*\\n{0,1})([[:print:]]+)",
466            GESHI_REPLACE => '\\2',
467            GESHI_MODIFIERS => 'm',
468            GESHI_BEFORE => '\\1',
469            GESHI_AFTER => '',
470            ),
471        2 => array(
472            // Italic text - formatted using .I or 'I
473            GESHI_SEARCH => "^([\\.']{1}I[[:blank:]]*\\n{0,1})([[:print:]]+)",
474            GESHI_REPLACE => '\\2',
475            GESHI_MODIFIERS => 'm',
476            GESHI_BEFORE => '\\1',
477            GESHI_AFTER => '',
478            ),
479        3 => array(
480            // Bold text - formatted inline
481            GESHI_SEARCH => '(\\\\fB)([[:print:]]+?)(\\\\fR)',
482            GESHI_REPLACE => '\\2',
483            GESHI_MODIFIERS => '',
484            GESHI_BEFORE => '\\1',
485            GESHI_AFTER => '\\3',
486            ),
487        4 => array (
488            // Italic text - formatted inline
489            GESHI_SEARCH => '(\\\\fI)([[:print:]]+?)(\\\\fR)',
490            GESHI_REPLACE => '\\2',
491            GESHI_MODIFIERS => '',
492            GESHI_BEFORE => '\\1',
493            GESHI_AFTER => '\\3',
494            ),
495        5 => array(
496            // Line start macros (.TP, .SH, et cetera)
497            GESHI_SEARCH => "^([.']{1}[a-zA-Z]+)",
498            GESHI_REPLACE => '\\1',
499            GESHI_MODIFIERS => 'm',
500            GESHI_BEFORE => '',
501            GESHI_AFTER => '',
502            ),
503        ),
504    'URLS' => array(),
505    'OOLANG' => false,
506    'OBJECT_SPLITTERS' => array(),
507    'HIGHLIGHT_STRICT_BLOCK' => array(),
508    'STRICT_MODE_APPLIES' => GESHI_NEVER,
509    'SCRIPT_DELIMITERS' => array(),
510);
511