/* Language: HTMLBars Requires: xml.js Author: Michael Johnston Description: Matcher for HTMLBars Website: https://github.com/tildeio/htmlbars Category: template */ export default function (hljs) { var BUILT_INS = 'action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view'; var ATTR_ASSIGNMENT = { illegal: /\}\}/, begin: /[a-zA-Z0-9_]+=/, returnBegin: true, relevance: 0, contains: [ { className: 'attr', begin: /[a-zA-Z0-9_]+/ } ] }; var TAG_INNARDS = { endsWithParent: true, relevance: 0, keywords: { keyword: 'as', built_in: BUILT_INS }, contains: [hljs.QUOTE_STRING_MODE, ATTR_ASSIGNMENT, hljs.NUMBER_MODE] }; return { name: 'HTMLBars', case_insensitive: true, subLanguage: 'xml', contains: [ hljs.COMMENT('{{!(--)?', '(--)?}}'), { className: 'template-tag', begin: /\{\{[#\/]/, end: /\}\}/, contains: [ { className: 'name', begin: /[a-zA-Z\.\-]+/, keywords: { 'builtin-name': BUILT_INS }, starts: TAG_INNARDS } ] }, { className: 'template-variable', begin: /\{\{[a-zA-Z][a-zA-Z\-]+/, end: /\}\}/, keywords: { keyword: 'as', built_in: BUILT_INS }, contains: [hljs.QUOTE_STRING_MODE] } ] }; }