1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- module.exports = function (hljs) {
- var BUILT_INS = {'builtin-name': 'each in with if else unless bindattr action collection debugger log outlet template unbound view yield lookup'};
- var IDENTIFIER_PLAIN_OR_QUOTED = {
- begin: /".*?"|'.*?'|\[.*?\]|\w+/
- };
- var EXPRESSION_OR_HELPER_CALL = hljs.inherit(IDENTIFIER_PLAIN_OR_QUOTED, {
- keywords: BUILT_INS,
- starts: {
- // helper params
- endsWithParent: true,
- relevance: 0,
- contains: [hljs.inherit(IDENTIFIER_PLAIN_OR_QUOTED, {relevance: 0})]
- }
- });
- var BLOCK_MUSTACHE_CONTENTS = hljs.inherit(EXPRESSION_OR_HELPER_CALL, {
- className: 'name'
- });
- var BASIC_MUSTACHE_CONTENTS = hljs.inherit(EXPRESSION_OR_HELPER_CALL, {
- // relevance 0 for backward compatibility concerning auto-detection
- relevance: 0
- });
- var ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH = {begin: /\\\{\{/, skip: true};
- var PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH = {begin: /\\\\(?=\{\{)/, skip: true};
- return {
- aliases: ['hbs', 'html.hbs', 'html.handlebars'],
- case_insensitive: true,
- subLanguage: 'xml',
- contains: [
- ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH,
- PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH,
- hljs.COMMENT(/\{\{!--/, /--\}\}/),
- hljs.COMMENT(/\{\{!/, /\}\}/),
- {
- // open raw block "{{{{raw}}}} content not evaluated {{{{/raw}}}}"
- className: 'template-tag',
- begin: /\{\{\{\{(?!\/)/, end: /\}\}\}\}/,
- contains: [BLOCK_MUSTACHE_CONTENTS],
- starts: {end: /\{\{\{\{\//, returnEnd: true, subLanguage: 'xml'}
- },
- {
- // close raw block
- className: 'template-tag',
- begin: /\{\{\{\{\//, end: /\}\}\}\}/,
- contains: [BLOCK_MUSTACHE_CONTENTS]
- },
- {
- // open block statement
- className: 'template-tag',
- begin: /\{\{[#\/]/, end: /\}\}/,
- contains: [BLOCK_MUSTACHE_CONTENTS],
- },
- {
- // template variable or helper-call that is NOT html-escaped
- className: 'template-variable',
- begin: /\{\{\{/, end: /\}\}\}/,
- keywords: BUILT_INS,
- contains: [BASIC_MUSTACHE_CONTENTS]
- },
- {
- // template variable or helper-call that is html-escaped
- className: 'template-variable',
- begin: /\{\{/, end: /\}\}/,
- keywords: BUILT_INS,
- contains: [BASIC_MUSTACHE_CONTENTS]
- }
- ]
- };
- };
|