UNPKG

1.55 kBJavaScriptView Raw
1(function (Prism) {
2 Prism.languages.latte = {
3 'comment': /^\{\*[\s\S]*/,
4 'ld': {
5 pattern: /^\{(?:[=_]|\/?(?!\d|\w+\()\w+|)/,
6 inside: {
7 'punctuation': /^\{\/?/,
8 'tag': {
9 pattern: /.+/,
10 alias: 'important'
11 }
12 }
13 },
14 'rd': {
15 pattern: /\}$/,
16 inside: {
17 'punctuation': /.+/
18 }
19 },
20 'php': {
21 pattern: /\S(?:[\s\S]*\S)?/,
22 alias: 'language-php',
23 inside: Prism.languages.php
24 }
25 };
26
27 var markupLatte = Prism.languages.extend('markup', {});
28 Prism.languages.insertBefore('inside', 'attr-value', {
29 'n-attr': {
30 pattern: /n:[\w-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+))?/,
31 inside: {
32 'attr-name': {
33 pattern: /^[^\s=]+/,
34 alias: 'important'
35 },
36 'attr-value': {
37 pattern: /=[\s\S]+/,
38 inside: {
39 'punctuation': [
40 /^=/,
41 {
42 pattern: /^(\s*)["']|["']$/,
43 lookbehind: true
44 }
45 ],
46 'php': {
47 pattern: /\S(?:[\s\S]*\S)?/,
48 inside: Prism.languages.php
49 }
50 }
51 },
52 }
53 },
54 }, markupLatte.tag);
55
56 Prism.hooks.add('before-tokenize', function(env) {
57 if (env.language !== 'latte') {
58 return;
59 }
60 var lattePattern = /\{\*[\s\S]*?\*\}|\{[^'"\s{}*](?:[^"'/{}]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|\/\*(?:[^*]|\*(?!\/))*\*\/)*?\}/g;
61 Prism.languages['markup-templating'].buildPlaceholders(env, 'latte', lattePattern);
62 env.grammar = markupLatte;
63 });
64
65 Prism.hooks.add('after-tokenize', function(env) {
66 Prism.languages['markup-templating'].tokenizePlaceholders(env, 'latte');
67 });
68
69}(Prism));