Index: polymer_1.0.4/bower_components/prism/components/prism-handlebars.js |
diff --git a/polymer_1.0.4/bower_components/prism/components/prism-handlebars.js b/polymer_1.0.4/bower_components/prism/components/prism-handlebars.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..315494050009028c9f45f34488cd280c1e0a37cd |
--- /dev/null |
+++ b/polymer_1.0.4/bower_components/prism/components/prism-handlebars.js |
@@ -0,0 +1,82 @@ |
+(function(Prism) { |
+ |
+ var handlebars_pattern = /\{\{\{[\w\W]+?\}\}\}|\{\{[\w\W]+?\}\}/g; |
+ |
+ Prism.languages.handlebars = Prism.languages.extend('markup', { |
+ 'handlebars': { |
+ pattern: handlebars_pattern, |
+ inside: { |
+ 'delimiter': { |
+ pattern: /^\{\{\{?|\}\}\}?$/i, |
+ alias: 'punctuation' |
+ }, |
+ 'string': /(["'])(\\?.)+?\1/, |
+ 'number': /\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/, |
+ 'boolean': /\b(true|false)\b/, |
+ 'block': { |
+ pattern: /^(\s*~?\s*)[#\/]\w+/i, |
+ lookbehind: true, |
+ alias: 'keyword' |
+ }, |
+ 'brackets': { |
+ pattern: /\[[^\]]+\]/, |
+ inside: { |
+ punctuation: /\[|\]/, |
+ variable: /[\w\W]+/ |
+ } |
+ }, |
+ 'punctuation': /[!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]/, |
+ 'variable': /[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/ |
+ } |
+ } |
+ }); |
+ |
+ // Comments are inserted at top so that they can |
+ // surround markup |
+ Prism.languages.insertBefore('handlebars', 'tag', { |
+ 'handlebars-comment': { |
+ pattern: /\{\{![\w\W]*?\}\}/, |
+ alias: ['handlebars','comment'] |
+ } |
+ }); |
+ |
+ // Tokenize all inline Handlebars expressions that are wrapped in {{ }} or {{{ }}} |
+ // This allows for easy Handlebars + markup highlighting |
+ Prism.hooks.add('before-highlight', function(env) { |
+ if (env.language !== 'handlebars') { |
+ return; |
+ } |
+ |
+ env.tokenStack = []; |
+ |
+ env.backupCode = env.code; |
+ env.code = env.code.replace(handlebars_pattern, function(match) { |
+ env.tokenStack.push(match); |
+ |
+ return '___HANDLEBARS' + env.tokenStack.length + '___'; |
+ }); |
+ }); |
+ |
+ // Restore env.code for other plugins (e.g. line-numbers) |
+ Prism.hooks.add('before-insert', function(env) { |
+ if (env.language === 'handlebars') { |
+ env.code = env.backupCode; |
+ delete env.backupCode; |
+ } |
+ }); |
+ |
+ // Re-insert the tokens after highlighting |
+ // and highlight them with defined grammar |
+ Prism.hooks.add('after-highlight', function(env) { |
+ if (env.language !== 'handlebars') { |
+ return; |
+ } |
+ |
+ for (var i = 0, t; t = env.tokenStack[i]; i++) { |
+ env.highlightedCode = env.highlightedCode.replace('___HANDLEBARS' + (i + 1) + '___', Prism.highlight(t, env.grammar, 'handlebars')); |
+ } |
+ |
+ env.element.innerHTML = env.highlightedCode; |
+ }); |
+ |
+}(Prism)); |