Index: polymer_1.0.4/bower_components/prism-element/prism-highlighter.html |
diff --git a/polymer_1.0.4/bower_components/prism-element/prism-highlighter.html b/polymer_1.0.4/bower_components/prism-element/prism-highlighter.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dd4be8143cdb095edde9506d3daddae2ff540486 |
--- /dev/null |
+++ b/polymer_1.0.4/bower_components/prism-element/prism-highlighter.html |
@@ -0,0 +1,95 @@ |
+<!-- |
+@license |
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved. |
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
+Code distributed by Google as part of the polymer project is also |
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
+--> |
+ |
+<link rel="import" href="../polymer/polymer.html"> |
+ |
+<link rel="import" href="prism-import.html"> |
+ |
+<!-- |
+Syntax highlighting via [Prism](http://prismjs.com/). |
+ |
+Place a `<prism-highlighter>` in your document, preferably as a direct child of |
+`<body>`. It will listen for `syntax-highlight` events on its parent element, |
+and annotate the code being provided via that event. |
+ |
+The `syntax-highlight` event's detail is expected to have a `code` property |
+containing the source to highlight. The event detail can optionally contain a |
+`lang` property, containing a string like `"html"`, `"js"`, etc. |
+ |
+This flow is supported by [`<marked-element>`](https://github.com/PolymerElements/marked-element). |
+--> |
+<script> |
+(function() { |
+ |
+ 'use strict'; |
+ |
+ var HIGHLIGHT_EVENT = 'syntax-highlight'; |
+ |
+ Polymer({ |
+ |
+ is: 'prism-highlighter', |
+ |
+ ready: function() { |
+ this._handler = this._highlight.bind(this); |
+ }, |
+ |
+ attached: function() { |
+ (this.parentElement || this.parentNode.host).addEventListener(HIGHLIGHT_EVENT, this._handler); |
+ }, |
+ |
+ detached: function() { |
+ (this.parentElement || this.parentNode.host).removeEventListener(HIGHLIGHT_EVENT, this._handler); |
+ }, |
+ |
+ /** |
+ * Handle the highlighting event, if we can. |
+ * |
+ * @param {!CustomEvent} event |
+ */ |
+ _highlight: function(event) { |
+ if (!event.detail || !event.detail.code) { |
+ console.warn('Malformed', HIGHLIGHT_EVENT, 'event:', event.detail); |
+ return; |
+ } |
+ |
+ var detail = event.detail; |
+ detail.code = Prism.highlight(detail.code, this._detectLang(detail.code, detail.lang)); |
+ }, |
+ |
+ /** |
+ * Picks a Prism formatter based on the `lang` hint and `code`. |
+ * |
+ * @param {string} code The source being highlighted. |
+ * @param {string=} lang A language hint (e.g. ````LANG`). |
+ * @return {!prism.Lang} |
+ */ |
+ _detectLang: function(code, lang) { |
+ if (!lang) { |
+ // Stupid simple detection if we have no lang, courtesy of: |
+ // https://github.com/robdodson/mark-down/blob/ac2eaa/mark-down.html#L93-101 |
+ return code.match(/^\s*</) ? Prism.languages.markup : Prism.languages.javascript; |
+ } |
+ |
+ if (lang === 'js' || lang.substr(0, 2) === 'es') { |
+ return Prism.languages.javascript; |
+ } else if (lang === 'css') { |
+ return Prism.languages.css; |
+ } else if (lang === 'c') { |
+ return Prism.langauges.clike; |
+ } else { |
+ // The assumption is that you're mostly documenting HTML when in HTML. |
+ return Prism.languages.markup; |
+ } |
+ }, |
+ |
+ }); |
+ |
+})(); |
+</script> |