12345678910111213141516171819202122232425262728293031323334353637383940 |
- (function (Prism) {
- Prism.languages.handlebars = {
- 'comment': /\{\{![\s\S]*?\}\}/,
- 'delimiter': {
- pattern: /^\{\{\{?|\}\}\}?$/,
- alias: 'punctuation'
- },
- 'string': /(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,
- 'number': /\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,
- 'boolean': /\b(?:false|true)\b/,
- 'block': {
- pattern: /^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,
- lookbehind: true,
- alias: 'keyword'
- },
- 'brackets': {
- pattern: /\[[^\]]+\]/,
- inside: {
- punctuation: /\[|\]/,
- variable: /[\s\S]+/
- }
- },
- 'punctuation': /[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,
- 'variable': /[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/
- };
- Prism.hooks.add('before-tokenize', function (env) {
- var handlebarsPattern = /\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g;
- Prism.languages['markup-templating'].buildPlaceholders(env, 'handlebars', handlebarsPattern);
- });
- Prism.hooks.add('after-tokenize', function (env) {
- Prism.languages['markup-templating'].tokenizePlaceholders(env, 'handlebars');
- });
- Prism.languages.hbs = Prism.languages.handlebars;
- Prism.languages.mustache = Prism.languages.handlebars;
- }(Prism));
|