v1
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
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]
|
||||
}
|
||||
]
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user