| OLD | NEW |
| 1 (function(Prism) { | 1 (function(Prism) { |
| 2 | 2 |
| 3 var handlebars_pattern = /\{\{\{[\w\W]+?\}\}\}|\{\{[\w\W]+?\}\}/g; | 3 var handlebars_pattern = /\{\{\{[\w\W]+?\}\}\}|\{\{[\w\W]+?\}\}/g; |
| 4 | 4 |
| 5 Prism.languages.handlebars = Prism.languages.extend('markup', { | 5 Prism.languages.handlebars = Prism.languages.extend('markup', { |
| 6 'handlebars': { | 6 'handlebars': { |
| 7 pattern: handlebars_pattern, | 7 pattern: handlebars_pattern, |
| 8 inside: { | 8 inside: { |
| 9 'delimiter': { | 9 'delimiter': { |
| 10 pattern: /^\{\{\{?|\}\}\}?$/i, | 10 pattern: /^\{\{\{?|\}\}\}?$/i, |
| 11 alias: 'punctuation' | 11 alias: 'punctuation' |
| 12 }, | 12 }, |
| 13 » » » » 'string': /(["'])(\\?.)+?\1/, | 13 » » » » 'string': /(["'])(\\?.)*?\1/, |
| 14 » » » » 'number': /\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d
+)?)\b/, | 14 » » » » 'number': /\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee][+-]
?\d+)?)\b/, |
| 15 'boolean': /\b(true|false)\b/, | 15 'boolean': /\b(true|false)\b/, |
| 16 'block': { | 16 'block': { |
| 17 » » » » » pattern: /^(\s*~?\s*)[#\/]\S+/i, | 17 » » » » » pattern: /^(\s*~?\s*)[#\/]\S+?(?=\s*~?\s
*$|\s)/i, |
| 18 lookbehind: true, | 18 lookbehind: true, |
| 19 alias: 'keyword' | 19 alias: 'keyword' |
| 20 }, | 20 }, |
| 21 'brackets': { | 21 'brackets': { |
| 22 pattern: /\[[^\]]+\]/, | 22 pattern: /\[[^\]]+\]/, |
| 23 inside: { | 23 inside: { |
| 24 punctuation: /\[|\]/, | 24 punctuation: /\[|\]/, |
| 25 variable: /[\w\W]+/ | 25 variable: /[\w\W]+/ |
| 26 } | 26 } |
| 27 }, | 27 }, |
| 28 'punctuation': /[!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~
]/, | 28 'punctuation': /[!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~
]/, |
| 29 » » » » 'variable': /[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+
/ | 29 » » » » 'variable': /[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~\s
]+/ |
| 30 } | 30 } |
| 31 } | 31 } |
| 32 }); | 32 }); |
| 33 | 33 |
| 34 // Comments are inserted at top so that they can | 34 // Comments are inserted at top so that they can |
| 35 // surround markup | 35 // surround markup |
| 36 Prism.languages.insertBefore('handlebars', 'tag', { | 36 Prism.languages.insertBefore('handlebars', 'tag', { |
| 37 'handlebars-comment': { | 37 'handlebars-comment': { |
| 38 pattern: /\{\{![\w\W]*?\}\}/, | 38 pattern: /\{\{![\w\W]*?\}\}/, |
| 39 alias: ['handlebars','comment'] | 39 alias: ['handlebars','comment'] |
| (...skipping 26 matching lines...) Expand all Loading... |
| 66 }); | 66 }); |
| 67 | 67 |
| 68 // Re-insert the tokens after highlighting | 68 // Re-insert the tokens after highlighting |
| 69 // and highlight them with defined grammar | 69 // and highlight them with defined grammar |
| 70 Prism.hooks.add('after-highlight', function(env) { | 70 Prism.hooks.add('after-highlight', function(env) { |
| 71 if (env.language !== 'handlebars') { | 71 if (env.language !== 'handlebars') { |
| 72 return; | 72 return; |
| 73 } | 73 } |
| 74 | 74 |
| 75 for (var i = 0, t; t = env.tokenStack[i]; i++) { | 75 for (var i = 0, t; t = env.tokenStack[i]; i++) { |
| 76 » » » env.highlightedCode = env.highlightedCode.replace('___HA
NDLEBARS' + (i + 1) + '___', Prism.highlight(t, env.grammar, 'handlebars')); | 76 » » » // The replace prevents $$, $&, $`, $', $n, $nn from bei
ng interpreted as special patterns |
| 77 » » » env.highlightedCode = env.highlightedCode.replace('___HA
NDLEBARS' + (i + 1) + '___', Prism.highlight(t, env.grammar, 'handlebars').repla
ce(/\$/g, '$$$$')); |
| 77 } | 78 } |
| 78 | 79 |
| 79 env.element.innerHTML = env.highlightedCode; | 80 env.element.innerHTML = env.highlightedCode; |
| 80 }); | 81 }); |
| 81 | 82 |
| 82 }(Prism)); | 83 }(Prism)); |
| OLD | NEW |