summaryrefslogtreecommitdiffstats
path: root/public/prism/prism-twig.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/prism/prism-twig.js')
-rw-r--r--public/prism/prism-twig.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/public/prism/prism-twig.js b/public/prism/prism-twig.js
new file mode 100644
index 0000000..0389b96
--- /dev/null
+++ b/public/prism/prism-twig.js
@@ -0,0 +1,45 @@
+Prism.languages.twig = {
+ comment: /^\{#[\s\S]*?#\}$/,
+
+ 'tag-name': {
+ pattern: /(^\{%-?\s*)\w+/,
+ lookbehind: true,
+ alias: 'keyword',
+ },
+ delimiter: {
+ pattern: /^\{[{%]-?|-?[%}]\}$/,
+ alias: 'punctuation',
+ },
+
+ string: {
+ pattern: /("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,
+ inside: {
+ punctuation: /^['"]|['"]$/,
+ },
+ },
+ keyword: /\b(?:even|if|odd)\b/,
+ boolean: /\b(?:false|null|true)\b/,
+ number: /\b0x[\dA-Fa-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][-+]?\d+)?/,
+ operator: [
+ {
+ pattern:
+ /(\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,
+ lookbehind: true,
+ },
+ /[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/,
+ ],
+ punctuation: /[()\[\]{}:.,]/,
+};
+
+Prism.hooks.add('before-tokenize', function (env) {
+ if (env.language !== 'twig') {
+ return;
+ }
+
+ var pattern = /\{(?:#[\s\S]*?#|%[\s\S]*?%|\{[\s\S]*?\})\}/g;
+ Prism.languages['markup-templating'].buildPlaceholders(env, 'twig', pattern);
+});
+
+Prism.hooks.add('after-tokenize', function (env) {
+ Prism.languages['markup-templating'].tokenizePlaceholders(env, 'twig');
+});