1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
!(function (n) {
for (
var i =
'[^<()"\']|\\((?:<expr>)*\\)|<(?!#--)|<#--(?:[^-]|-(?!->))*--\x3e|"(?:[^\\\\"]|\\\\.)*"|\'(?:[^\\\\\']|\\\\.)*\'',
e = 0;
e < 2;
e++
)
i = i.replace(/<expr>/g, function () {
return i;
});
i = i.replace(/<expr>/g, '[^\\s\\S]');
var t = {
comment: /<#--[\s\S]*?-->/,
string: [
{ pattern: /\br("|')(?:(?!\1)[^\\]|\\.)*\1/, greedy: !0 },
{
pattern: RegExp(
'("|\')(?:(?!\\1|\\$\\{)[^\\\\]|\\\\.|\\$\\{(?:(?!\\})(?:<expr>))*\\})*\\1'.replace(
/<expr>/g,
function () {
return i;
}
)
),
greedy: !0,
inside: {
interpolation: {
pattern: RegExp(
'((?:^|[^\\\\])(?:\\\\\\\\)*)\\$\\{(?:(?!\\})(?:<expr>))*\\}'.replace(
/<expr>/g,
function () {
return i;
}
)
),
lookbehind: !0,
inside: {
'interpolation-punctuation': {
pattern: /^\$\{|\}$/,
alias: 'punctuation',
},
rest: null,
},
},
},
},
],
keyword: /\b(?:as)\b/,
boolean: /\b(?:false|true)\b/,
'builtin-function': {
pattern: /((?:^|[^?])\?\s*)\w+/,
lookbehind: !0,
alias: 'function',
},
function: /\b\w+(?=\s*\()/,
number: /\b\d+(?:\.\d+)?\b/,
operator:
/\.\.[<*!]?|->|--|\+\+|&&|\|\||\?{1,2}|[-+*/%!=<>]=?|\b(?:gt|gte|lt|lte)\b/,
punctuation: /[,;.:()[\]{}]/,
};
(t.string[1].inside.interpolation.inside.rest = t),
(n.languages.ftl = {
'ftl-comment': { pattern: /^<#--[\s\S]*/, alias: 'comment' },
'ftl-directive': {
pattern: /^<[\s\S]+>$/,
inside: {
directive: {
pattern: /(^<\/?)[#@][a-z]\w*/i,
lookbehind: !0,
alias: 'keyword',
},
punctuation: /^<\/?|\/?>$/,
content: { pattern: /\s*\S[\s\S]*/, alias: 'ftl', inside: t },
},
},
'ftl-interpolation': {
pattern: /^\$\{[\s\S]*\}$/,
inside: {
punctuation: /^\$\{|\}$/,
content: { pattern: /\s*\S[\s\S]*/, alias: 'ftl', inside: t },
},
},
}),
n.hooks.add('before-tokenize', function (e) {
var t = RegExp(
'<#--[^]*?--\x3e|</?[#@][a-zA-Z](?:<expr>)*?>|\\$\\{(?:<expr>)*?\\}'.replace(
/<expr>/g,
function () {
return i;
}
),
'gi'
);
n.languages['markup-templating'].buildPlaceholders(e, 'ftl', t);
}),
n.hooks.add('after-tokenize', function (e) {
n.languages['markup-templating'].tokenizePlaceholders(e, 'ftl');
});
})(Prism);
|