UNPKG

2.01 kBJavaScriptView Raw
1Prism.languages.parser = Prism.languages.extend('markup', {
2 'keyword': {
3 pattern: /(^|[^^])(?:\^(?:case|eval|for|if|switch|throw)\b|@(?:BASE|CLASS|GET(?:_DEFAULT)?|OPTIONS|SET_DEFAULT|USE)\b)/,
4 lookbehind: true
5 },
6 'variable': {
7 pattern: /(^|[^^])\B\$(?:\w+|(?=[.{]))(?:(?:\.|::?)\w+)*(?:\.|::?)?/,
8 lookbehind: true,
9 inside: {
10 'punctuation': /\.|:+/
11 }
12 },
13 'function': {
14 pattern: /(^|[^^])\B[@^]\w+(?:(?:\.|::?)\w+)*(?:\.|::?)?/,
15 lookbehind: true,
16 inside: {
17 'keyword': {
18 pattern: /(^@)(?:GET_|SET_)/,
19 lookbehind: true
20 },
21 'punctuation': /\.|:+/
22 }
23 },
24 'escape': {
25 pattern: /\^(?:[$^;@()\[\]{}"':]|#[a-f\d]*)/i,
26 alias: 'builtin'
27 },
28 'punctuation': /[\[\](){};]/
29});
30Prism.languages.insertBefore('parser', 'keyword', {
31 'parser-comment': {
32 pattern: /(\s)#.*/,
33 lookbehind: true,
34 alias: 'comment'
35 },
36 'expression': {
37 // Allow for 3 levels of depth
38 pattern: /(^|[^^])\((?:[^()]|\((?:[^()]|\((?:[^()])*\))*\))*\)/,
39 greedy: true,
40 lookbehind: true,
41 inside: {
42 'string': {
43 pattern: /(^|[^^])(["'])(?:(?!\2)[^^]|\^[\s\S])*\2/,
44 lookbehind: true
45 },
46 'keyword': Prism.languages.parser.keyword,
47 'variable': Prism.languages.parser.variable,
48 'function': Prism.languages.parser.function,
49 'boolean': /\b(?:true|false)\b/,
50 'number': /\b(?:0x[a-f\d]+|\d+\.?\d*(?:e[+-]?\d+)?)\b/i,
51 'escape': Prism.languages.parser.escape,
52 'operator': /[~+*\/\\%]|!(?:\|\|?|=)?|&&?|\|\|?|==|<[<=]?|>[>=]?|-[fd]?|\b(?:def|eq|ge|gt|in|is|le|lt|ne)\b/,
53 'punctuation': Prism.languages.parser.punctuation
54 }
55 }
56});
57Prism.languages.insertBefore('inside', 'punctuation', {
58 'expression': Prism.languages.parser.expression,
59 'keyword': Prism.languages.parser.keyword,
60 'variable': Prism.languages.parser.variable,
61 'function': Prism.languages.parser.function,
62 'escape': Prism.languages.parser.escape,
63 'parser-punctuation': {
64 pattern: Prism.languages.parser.punctuation,
65 alias: 'punctuation'
66 }
67}, Prism.languages.parser['tag'].inside['attr-value']);
\No newline at end of file