| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | /*Language: TwigRequires: xml.jsAuthor: Luke Holder <[email protected]>Description: Twig is a templating language for PHPCategory: template*/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]      }    ]  };}
 |