UNPKG

1.08 kBJavaScriptView Raw
1Prism.languages.twig = {
2 'comment': /^\{#[\s\S]*?#\}$/,
3
4 'tag-name': {
5 pattern: /(^\{%-?\s*)\w+/,
6 lookbehind: true,
7 alias: 'keyword'
8 },
9 'delimiter': {
10 pattern: /^\{[{%]-?|-?[%}]\}$/,
11 alias: 'punctuation'
12 },
13
14 'string': {
15 pattern: /("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,
16 inside: {
17 'punctuation': /^['"]|['"]$/
18 }
19 },
20 'keyword': /\b(?:even|if|odd)\b/,
21 'boolean': /\b(?:false|null|true)\b/,
22 'number': /\b0x[\dA-Fa-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][-+]?\d+)?/,
23 'operator': [
24 {
25 pattern: /(\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,
26 lookbehind: true
27 },
28 /[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/
29 ],
30 'punctuation': /[()\[\]{}:.,]/
31};
32
33Prism.hooks.add('before-tokenize', function (env) {
34 if (env.language !== 'twig') {
35 return;
36 }
37
38 var pattern = /\{(?:#[\s\S]*?#|%[\s\S]*?%|\{[\s\S]*?\})\}/g;
39 Prism.languages['markup-templating'].buildPlaceholders(env, 'twig', pattern);
40});
41
42Prism.hooks.add('after-tokenize', function (env) {
43 Prism.languages['markup-templating'].tokenizePlaceholders(env, 'twig');
44});
45
\No newline at end of file