UNPKG

2.28 kBJavaScriptView Raw
1hljs.registerLanguage("handlebars",(()=>{"use strict";function e(e){
2return e?"string"==typeof e?e:e.source:null}function n(...n){
3return n.map((n=>e(n))).join("")}return a=>{const t={
4"builtin-name":"action bindattr collection component concat debugger each each-in get hash if in input link-to loc log lookup mut outlet partial query-params render template textarea unbound unless view with yield"
5},s=/\[\]|\[[^\]]+\]/,i=/[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/,r=((...n)=>"("+n.map((n=>e(n))).join("|")+")")(/""|"[^"]+"/,/''|'[^']+'/,s,i),l=n(n("(",/\.|\.\/|\//,")?"),r,(h=n(/(\.|\/)/,r),
6n("(",h,")*"))),c=n("(",s,"|",i,")(?==)"),o={begin:l,lexemes:/[\w.\/]+/
7},m=a.inherit(o,{keywords:{literal:"true false undefined null"}}),d={begin:/\(/,
8end:/\)/},g={className:"attr",begin:c,relevance:0,starts:{begin:/=/,end:/=/,
9starts:{contains:[a.NUMBER_MODE,a.QUOTE_STRING_MODE,a.APOS_STRING_MODE,m,d]}}
10},b={contains:[a.NUMBER_MODE,a.QUOTE_STRING_MODE,a.APOS_STRING_MODE,{
11begin:/as\s+\|/,keywords:{keyword:"as"},end:/\|/,contains:[{begin:/\w+/}]
12},g,m,d],returnEnd:!0},u=a.inherit(o,{className:"name",keywords:t,
13starts:a.inherit(b,{end:/\)/})});var h;d.contains=[u];const N=a.inherit(o,{
14keywords:t,className:"name",starts:a.inherit(b,{end:/\}\}/})}),p=a.inherit(o,{
15keywords:t,className:"name"}),E=a.inherit(o,{className:"name",keywords:t,
16starts:a.inherit(b,{end:/\}\}/})});return{name:"Handlebars",
17aliases:["hbs","html.hbs","html.handlebars","htmlbars"],case_insensitive:!0,
18subLanguage:"xml",contains:[{begin:/\\\{\{/,skip:!0},{begin:/\\\\(?=\{\{)/,
19skip:!0},a.COMMENT(/\{\{!--/,/--\}\}/),a.COMMENT(/\{\{!/,/\}\}/),{
20className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[N],
21starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{
22className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[p]},{
23className:"template-tag",begin:/\{\{#/,end:/\}\}/,contains:[N]},{
24className:"template-tag",begin:/\{\{(?=else\}\})/,end:/\}\}/,keywords:"else"},{
25className:"template-tag",begin:/\{\{(?=else if)/,end:/\}\}/,keywords:"else if"
26},{className:"template-tag",begin:/\{\{\//,end:/\}\}/,contains:[p]},{
27className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,contains:[E]},{
28className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[E]}]}}})());
\No newline at end of file