1 | hljs.registerLanguage("handlebars",(()=>{"use strict";function e(e){
|
2 | return e?"string"==typeof e?e:e.source:null}function n(...n){
|
3 | return n.map((n=>e(n))).join("")}return t=>{const a={$pattern:/[\w.\/]+/,
|
4 | built_in:["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=function(...n){
|
6 | return"("+((e=>{const n=e[e.length-1]
|
7 | ;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}
|
8 | })(n).capture?"":"?:")+n.map((n=>e(n))).join("|")+")"
|
9 | }(/""|"[^"]+"/,/''|'[^']+'/,s,i),l=n(n("(?:",/\.|\.\/|\//,")?"),r,(p=n(/(\.|\/)/,r),
|
10 | n("(?:",p,")*"))),c=n("(",s,"|",i,")(?==)"),o={begin:l},m=t.inherit(o,{
|
11 | keywords:{$pattern:/[\w.\/]+/,literal:["true","false","undefined","null"]}}),d={
|
12 | begin:/\(/,end:/\)/},g={className:"attr",begin:c,relevance:0,starts:{begin:/=/,
|
13 | end:/=/,starts:{
|
14 | contains:[t.NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,m,d]}}},u={
|
15 | contains:[t.NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{begin:/as\s+\|/,
|
16 | keywords:{keyword:"as"},end:/\|/,contains:[{begin:/\w+/}]},g,m,d],returnEnd:!0
|
17 | },b=t.inherit(o,{className:"name",keywords:a,starts:t.inherit(u,{end:/\)/})})
|
18 | ;var p;d.contains=[b];const h=t.inherit(o,{keywords:a,className:"name",
|
19 | starts:t.inherit(u,{end:/\}\}/})}),N=t.inherit(o,{keywords:a,className:"name"
|
20 | }),w=t.inherit(o,{className:"name",keywords:a,starts:t.inherit(u,{end:/\}\}/})})
|
21 | ;return{name:"Handlebars",
|
22 | aliases:["hbs","html.hbs","html.handlebars","htmlbars"],case_insensitive:!0,
|
23 | subLanguage:"xml",contains:[{begin:/\\\{\{/,skip:!0},{begin:/\\\\(?=\{\{)/,
|
24 | skip:!0},t.COMMENT(/\{\{!--/,/--\}\}/),t.COMMENT(/\{\{!/,/\}\}/),{
|
25 | className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[h],
|
26 | starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{
|
27 | className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[N]},{
|
28 | className:"template-tag",begin:/\{\{#/,end:/\}\}/,contains:[h]},{
|
29 | className:"template-tag",begin:/\{\{(?=else\}\})/,end:/\}\}/,keywords:"else"},{
|
30 | className:"template-tag",begin:/\{\{(?=else if)/,end:/\}\}/,keywords:"else if"
|
31 | },{className:"template-tag",begin:/\{\{\//,end:/\}\}/,contains:[N]},{
|
32 | className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,contains:[w]},{
|
33 | className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[w]}]}}})()); |
\ | No newline at end of file |