1<?php
2/*************************************************************************************
3 * sass.php
4 * -------
5 * Author: Javier Eguiluz (javier.eguiluz@gmail.com)
6 * Copyright: (c) 2014 Javier Eguiluz (javier.eguiluz@gmail.com)
7 * Release Version: 1.0.9.1
8 * Date Started: 2014/05/10
9 *
10 * SASS language file for GeSHi.
11 *
12 * CHANGES
13 * -------
14 * 2014/05/10 (1.0.0)
15 *   -  First Release
16 *
17 *************************************************************************************
18 *
19 *   This file is part of GeSHi.
20 *
21 *   GeSHi is free software; you can redistribute it and/or modify
22 *   it under the terms of the GNU General Public License as published by
23 *   the Free Software Foundation; either version 2 of the License, or
24 *   (at your option) any later version.
25 *
26 *   GeSHi is distributed in the hope that it will be useful,
27 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
28 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
29 *   GNU General Public License for more details.
30 *
31 *   You should have received a copy of the GNU General Public License
32 *   along with GeSHi; if not, write to the Free Software
33 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
34 *
35 ************************************************************************************/
36
37$language_data = array(
38    'LANG_NAME' => 'Sass',
39    'COMMENT_SINGLE' => array(1 => '//'),
40    'COMMENT_MULTI' => array('/*' => '*/'),
41    'COMMENT_REGEXP' => array(),
42    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
43    'QUOTEMARKS' => array('"', "'"),
44    'ESCAPE_CHAR' => '',
45    'ESCAPE_REGEXP' => array(),
46    'NUMBERS' =>
47        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,
48    'KEYWORDS' => array(
49        // properties
50        1 => array(
51            'azimuth',
52            'background-attachment',
53            'background-color',
54            'background-image',
55            'background-position',
56            'background-repeat',
57            'background',
58            'border-bottom-color',
59            'border-radius',
60            'border-top-left-radius',
61            'border-top-right-radius',
62            'border-bottom-right-radius',
63            'border-bottom-left-radius',
64            'border-bottom-style',
65            'border-bottom-width',
66            'border-left-color',
67            'border-left-style',
68            'border-left-width',
69            'border-right',
70            'border-right-color',
71            'border-right-style',
72            'border-right-width',
73            'border-top-color',
74            'border-top-style',
75            'border-top-width',
76            'border-bottom',
77            'border-collapse',
78            'border-left',
79            'border-width',
80            'border-color',
81            'border-spacing',
82            'border-style',
83            'border-top',
84            'border',
85            'box-shadow',
86            'caption-side',
87            'clear',
88            'clip',
89            'color',
90            'content',
91            'counter-increment',
92            'counter-reset',
93            'cue-after',
94            'cue-before',
95            'cue',
96            'cursor',
97            'direction',
98            'display',
99            'elevation',
100            'empty-cells',
101            'float',
102            'font-family',
103            'font-size',
104            'font-size-adjust',
105            'font-stretch',
106            'font-style',
107            'font-variant',
108            'font-weight',
109            'font',
110            'line-height',
111            'letter-spacing',
112            'list-style',
113            'list-style-image',
114            'list-style-position',
115            'list-style-type',
116            'margin-bottom',
117            'margin-left',
118            'margin-right',
119            'margin-top',
120            'margin',
121            'marker-offset',
122            'marks',
123            'max-height',
124            'max-width',
125            'min-height',
126            'min-width',
127            'orphans',
128            'outline',
129            'outline-color',
130            'outline-style',
131            'outline-width',
132            'overflow',
133            'padding-bottom',
134            'padding-left',
135            'padding-right',
136            'padding-top',
137            'padding',
138            'page',
139            'page-break-after',
140            'page-break-before',
141            'page-break-inside',
142            'pause-after',
143            'pause-before',
144            'pause',
145            'pitch',
146            'pitch-range',
147            'play-during',
148            'position',
149            'quotes',
150            'richness',
151            'right',
152            'size',
153            'speak-header',
154            'speak-numeral',
155            'speak-punctuation',
156            'speak',
157            'speech-rate',
158            'stress',
159            'table-layout',
160            'text-align',
161            'text-decoration',
162            'text-indent',
163            'text-shadow',
164            'text-transform',
165            'top',
166            'unicode-bidi',
167            'vertical-align',
168            'visibility',
169            'voice-family',
170            'volume',
171            'white-space',
172            'widows',
173            'width',
174            'word-spacing',
175            'z-index',
176            'bottom',
177            'left',
178            'height',
179            // media queries
180            'screen',
181            'orientation',
182            'min-device-width',
183            'max-device-width',
184        ),
185        // reserved words for values
186        2 => array(
187            // colors
188            'aqua',
189            'black',
190            'blue',
191            'fuchsia',
192            'gray',
193            'green',
194            'lime',
195            'maroon',
196            'navy',
197            'olive',
198            'orange',
199            'purple',
200            'red',
201            'silver',
202            'teal',
203            'white',
204            'yellow',
205            // media queries
206            'landscape',
207            'portrait',
208            // other
209            'above',
210            'absolute',
211            'always',
212            'armenian',
213            'aural',
214            'auto',
215            'avoid',
216            'baseline',
217            'behind',
218            'below',
219            'bidi-override',
220            'blink',
221            'block',
222            'bold',
223            'bolder',
224            'both',
225            'capitalize',
226            'center-left',
227            'center-right',
228            'center',
229            'circle',
230            'cjk-ideographic',
231            'close-quote',
232            'collapse',
233            'condensed',
234            'continuous',
235            'crop',
236            'crosshair',
237            'cross',
238            'cursive',
239            'dashed',
240            'decimal-leading-zero',
241            'decimal',
242            'default',
243            'digits',
244            'disc',
245            'dotted',
246            'double',
247            'e-resize',
248            'embed',
249            'extra-condensed',
250            'extra-expanded',
251            'expanded',
252            'fantasy',
253            'far-left',
254            'far-right',
255            'faster',
256            'fast',
257            'fixed',
258            'georgian',
259            'groove',
260            'hebrew',
261            'help',
262            'hidden',
263            'hide',
264            'higher',
265            'high',
266            'hiragana-iroha',
267            'hiragana',
268            'icon',
269            'inherit',
270            'inline-table',
271            'inline',
272            'inline-block',
273            'inset',
274            'inside',
275            'italic',
276            'justify',
277            'katakana-iroha',
278            'katakana',
279            'larger',
280            'large',
281            'left-side',
282            'leftwards',
283            'level',
284            'lighter',
285            'line-through',
286            'list-item',
287            'loud',
288            'lower-alpha',
289            'lower-greek',
290            'lower-roman',
291            'lowercase',
292            'ltr',
293            'lower',
294            'low',
295            'medium',
296            'message-box',
297            'middle',
298            'monospace',
299            'n-resize',
300            'narrower',
301            'ne-resize',
302            'no-close-quote',
303            'no-open-quote',
304            'no-repeat',
305            'none',
306            'normal',
307            'nowrap',
308            'nw-resize',
309            'oblique',
310            'once',
311            'open-quote',
312            'outset',
313            'outside',
314            'overline',
315            'pointer',
316            'px',
317            'relative',
318            'repeat-x',
319            'repeat-y',
320            'repeat',
321            'ridge',
322            'right-side',
323            'rightwards',
324            's-resize',
325            'sans-serif',
326            'scroll',
327            'se-resize',
328            'semi-condensed',
329            'semi-expanded',
330            'separate',
331            'serif',
332            'show',
333            'silent',
334            'slow',
335            'slower',
336            'small-caps',
337            'small-caption',
338            'smaller',
339            'soft',
340            'solid',
341            'spell-out',
342            'square',
343            'static',
344            'status-bar',
345            'super',
346            'sw-resize',
347            'table-caption',
348            'table-cell',
349            'table-column',
350            'table-column-group',
351            'table-footer-group',
352            'table-header-group',
353            'table-row',
354            'table-row-group',
355            'text',
356            'text-bottom',
357            'text-top',
358            'thick',
359            'thin',
360            'transparent',
361            'ultra-condensed',
362            'ultra-expanded',
363            'underline',
364            'upper-alpha',
365            'upper-latin',
366            'upper-roman',
367            'uppercase',
368            'url',
369            'visible',
370            'w-resize',
371            'wait',
372            'wider',
373            'x-fast',
374            'x-high',
375            'x-large',
376            'x-loud',
377            'x-low',
378            'x-small',
379            'x-soft',
380            'xx-large',
381            'xx-small',
382            'yes'
383        ),
384        // directives
385        3 => array(
386            '@at-root',
387            '@charset',
388            '@content',
389            '@debug',
390            '@each',
391            '@else',
392            '@elseif',
393            '@else if',
394            '@extend',
395            '@font-face',
396            '@for',
397            '@function',
398            '@if',
399            '@import',
400            '@include',
401            '@media',
402            '@mixin',
403            '@namespace',
404            '@page',
405            '@return',
406            '@warn',
407            '@while',
408        ),
409        // built-in Sass functions
410        4 => array(
411            'rgb',
412            'rgba',
413            'mix',
414            'hsl',
415            'hsla',
416            'hue',
417            'saturation',
418            'lightness',
419            'adjust-hue',
420            'lighten',
421            'darken',
422            'saturate',
423            'desaturate',
424            'grayscale',
425            'complement',
426            'invert',
427            'alpha',
428            'opacify',
429            'transparentize',
430            'adjust-color',
431            'scale-color',
432            'change-color',
433            'ie-hex-str',
434            'unquote',
435            'quote',
436            'str-length',
437            'str-insert',
438            'str-index',
439            'str-slice',
440            'to-upper-case',
441            'to-lower-case',
442            'percentage',
443            'round',
444            'ceil',
445            'floor',
446            'abs',
447            'min',
448            'max',
449            'random',
450            'length',
451            'nth',
452            'join',
453            'append',
454            'zip',
455            'index',
456            'list-separator',
457            'map-get',
458            'map-merge',
459            'map-remove',
460            'map-keys',
461            'map-values',
462            'map-has-key',
463            'keywords',
464            'feature-exists',
465            'variable-exists',
466            'global-variable-exists',
467            'function-exists',
468            'mixin-exists',
469            'inspect',
470            'type-of',
471            'unit',
472            'unitless',
473            'comparable',
474            'call',
475            'if',
476            'unique-id',
477        ),
478        // reserved words
479        5 => array(
480            '!important',
481            '!default',
482            '!optional',
483            'true',
484            'false',
485            'with',
486            'without',
487            'null',
488            'from',
489            'through',
490            'to',
491            'in',
492            'and',
493            'or',
494            'only',
495            'not',
496        ),
497    ),
498    'SYMBOLS' => array(
499        '(',
500        ')',
501        '{',
502        '}',
503        ':',
504        ';',
505        '>',
506        '+',
507        '*',
508        ',',
509        '^',
510        '=',
511        '&',
512        '~',
513        '!',
514        '%',
515        '?',
516        '...',
517    ),
518    'CASE_SENSITIVE' => array(
519        GESHI_COMMENTS => false,
520        1 => false,
521        2 => false,
522        3 => false,
523        4 => false,
524        5 => false,
525    ),
526    'STYLES' => array(
527        'KEYWORDS' => array(
528            1 => 'color: #000000; font-weight: bold;',
529            2 => 'color: #993333;',
530            3 => 'color: #990000;',
531            4 => 'color: #000000; font-weight: bold;',
532            5 => 'color: #009900;',
533        ),
534        'COMMENTS' => array(
535            1 => 'color: #006600; font-style: italic;',
536            'MULTI' => 'color: #006600; font-style: italic;'
537        ),
538        'ESCAPE_CHAR' => array(),
539        'BRACKETS' => array(
540            0 => 'color: #00AA00;'
541        ),
542        'STRINGS' => array(
543            0 => 'color: #ff0000;'
544        ),
545        'NUMBERS' => array(
546            0 => 'color: #cc66cc;'
547        ),
548        'METHODS' => array(),
549        'SYMBOLS' => array(
550            0 => 'color: #00AA00;'
551        ),
552        'SCRIPT' => array(),
553        'REGEXPS' => array(
554            0 => 'color: #cc00cc;',
555            1 => 'color: #6666ff;',
556            2 => 'color: #3333ff;',
557            3 => 'color: #933;',
558            4 => 'color: #ff6633;',
559            5 => 'color: #0066ff;',
560        )
561    ),
562    'URLS' => array(
563        1 => '',
564        2 => '',
565        3 => '',
566        4 => '',
567        5 => '',
568    ),
569    'OOLANG' => false,
570    'OBJECT_SPLITTERS' => array(),
571    'REGEXPS' => array(
572        // Variables
573        0 => "[$][a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*",
574        // Hexadecimal colors
575        1 => "\#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})",
576        // CSS Pseudo classes
577        // note: & is needed for &gt; (i.e. > )
578        2 => "(?<!\\\\):(?!\d)[a-zA-Z0-9\-]+\b(?:\s*(?=[\{\.#a-zA-Z,:+*&](.|\n)|<\|))",
579        // Measurements
580        3 => "[+\-]?(\d+|(\d*\.\d+))(em|ex|pt|px|cm|in|%)",
581        // Interpolation
582        4 => "(\#\{.*\})",
583        // Browser prefixed properties
584        5 => "(\-(moz|ms|o|webkit)\-[a-z\-]*)",
585    ),
586    'STRICT_MODE_APPLIES' => GESHI_NEVER,
587    'SCRIPT_DELIMITERS' => array(),
588    'HIGHLIGHT_STRICT_BLOCK' => array(),
589    'TAB_WIDTH' => 2,
590);
591