/*
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]
}
]
};
}