aboutsummaryrefslogtreecommitdiff
path: root/node_modules/highlight.js/lib/languages/twig.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/highlight.js/lib/languages/twig.js')
-rw-r--r--node_modules/highlight.js/lib/languages/twig.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/node_modules/highlight.js/lib/languages/twig.js b/node_modules/highlight.js/lib/languages/twig.js
new file mode 100644
index 000000000..2c4168b17
--- /dev/null
+++ b/node_modules/highlight.js/lib/languages/twig.js
@@ -0,0 +1,65 @@
+module.exports = function(hljs) {
+ var PARAMS = {
+ className: 'params',
+ begin: '\\(', end: '\\)'
+ };
+
+ var FUNCTION_NAMES = 'attribute block constant cycle date dump include ' +
+ 'max min parent random range source template_from_string';
+
+ var FUNCTIONS = {
+ beginKeywords: FUNCTION_NAMES,
+ keywords: {name: FUNCTION_NAMES},
+ relevance: 0,
+ contains: [
+ PARAMS
+ ]
+ };
+
+ var FILTER = {
+ begin: /\|[A-Za-z_]+:?/,
+ keywords:
+ 'abs batch capitalize convert_encoding date date_modify default ' +
+ 'escape first format join json_encode keys last length lower ' +
+ 'merge nl2br number_format raw replace reverse round slice sort split ' +
+ 'striptags title trim upper url_encode',
+ contains: [
+ FUNCTIONS
+ ]
+ };
+
+ var TAGS = 'autoescape block do embed extends filter flush for ' +
+ 'if import include macro sandbox set spaceless use verbatim';
+
+ TAGS = TAGS + ' ' + TAGS.split(' ').map(function(t){return 'end' + t}).join(' ');
+
+ return {
+ aliases: ['craftcms'],
+ case_insensitive: true,
+ subLanguage: 'xml',
+ contains: [
+ hljs.COMMENT(/\{#/, /#}/),
+ {
+ className: 'template-tag',
+ begin: /\{%/, end: /%}/,
+ contains: [
+ {
+ className: 'name',
+ begin: /\w+/,
+ keywords: TAGS,
+ starts: {
+ endsWithParent: true,
+ contains: [FILTER, FUNCTIONS],
+ relevance: 0
+ }
+ }
+ ]
+ },
+ {
+ className: 'template-variable',
+ begin: /\{\{/, end: /}}/,
+ contains: ['self', FILTER, FUNCTIONS]
+ }
+ ]
+ };
+}; \ No newline at end of file