Index: polymer_1.0.4/bower_components/prism/prism.js |
diff --git a/polymer_1.0.4/bower_components/prism/prism.js b/polymer_1.0.4/bower_components/prism/prism.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e74f7cd74621f84d5531e6d690f6746eea6fd068 |
--- /dev/null |
+++ b/polymer_1.0.4/bower_components/prism/prism.js |
@@ -0,0 +1,672 @@ |
+ |
+/* ********************************************** |
+ Begin prism-core.js |
+********************************************** */ |
+ |
+self = (typeof window !== 'undefined') |
+ ? window // if in browser |
+ : ( |
+ (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) |
+ ? self // if in worker |
+ : {} // if in node js |
+ ); |
+ |
+/** |
+ * Prism: Lightweight, robust, elegant syntax highlighting |
+ * MIT license http://www.opensource.org/licenses/mit-license.php/ |
+ * @author Lea Verou http://lea.verou.me |
+ */ |
+ |
+var Prism = (function(){ |
+ |
+// Private helper vars |
+var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i; |
+ |
+var _ = self.Prism = { |
+ util: { |
+ encode: function (tokens) { |
+ if (tokens instanceof Token) { |
+ return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); |
+ } else if (_.util.type(tokens) === 'Array') { |
+ return tokens.map(_.util.encode); |
+ } else { |
+ return tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\u00a0/g, ' '); |
+ } |
+ }, |
+ |
+ type: function (o) { |
+ return Object.prototype.toString.call(o).match(/\[object (\w+)\]/)[1]; |
+ }, |
+ |
+ // Deep clone a language definition (e.g. to extend it) |
+ clone: function (o) { |
+ var type = _.util.type(o); |
+ |
+ switch (type) { |
+ case 'Object': |
+ var clone = {}; |
+ |
+ for (var key in o) { |
+ if (o.hasOwnProperty(key)) { |
+ clone[key] = _.util.clone(o[key]); |
+ } |
+ } |
+ |
+ return clone; |
+ |
+ case 'Array': |
+ return o.map(function(v) { return _.util.clone(v); }); |
+ } |
+ |
+ return o; |
+ } |
+ }, |
+ |
+ languages: { |
+ extend: function (id, redef) { |
+ var lang = _.util.clone(_.languages[id]); |
+ |
+ for (var key in redef) { |
+ lang[key] = redef[key]; |
+ } |
+ |
+ return lang; |
+ }, |
+ |
+ /** |
+ * Insert a token before another token in a language literal |
+ * As this needs to recreate the object (we cannot actually insert before keys in object literals), |
+ * we cannot just provide an object, we need anobject and a key. |
+ * @param inside The key (or language id) of the parent |
+ * @param before The key to insert before. If not provided, the function appends instead. |
+ * @param insert Object with the key/value pairs to insert |
+ * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted. |
+ */ |
+ insertBefore: function (inside, before, insert, root) { |
+ root = root || _.languages; |
+ var grammar = root[inside]; |
+ |
+ if (arguments.length == 2) { |
+ insert = arguments[1]; |
+ |
+ for (var newToken in insert) { |
+ if (insert.hasOwnProperty(newToken)) { |
+ grammar[newToken] = insert[newToken]; |
+ } |
+ } |
+ |
+ return grammar; |
+ } |
+ |
+ var ret = {}; |
+ |
+ for (var token in grammar) { |
+ |
+ if (grammar.hasOwnProperty(token)) { |
+ |
+ if (token == before) { |
+ |
+ for (var newToken in insert) { |
+ |
+ if (insert.hasOwnProperty(newToken)) { |
+ ret[newToken] = insert[newToken]; |
+ } |
+ } |
+ } |
+ |
+ ret[token] = grammar[token]; |
+ } |
+ } |
+ |
+ // Update references in other language definitions |
+ _.languages.DFS(_.languages, function(key, value) { |
+ if (value === root[inside] && key != inside) { |
+ this[key] = ret; |
+ } |
+ }); |
+ |
+ return root[inside] = ret; |
+ }, |
+ |
+ // Traverse a language definition with Depth First Search |
+ DFS: function(o, callback, type) { |
+ for (var i in o) { |
+ if (o.hasOwnProperty(i)) { |
+ callback.call(o, i, o[i], type || i); |
+ |
+ if (_.util.type(o[i]) === 'Object') { |
+ _.languages.DFS(o[i], callback); |
+ } |
+ else if (_.util.type(o[i]) === 'Array') { |
+ _.languages.DFS(o[i], callback, i); |
+ } |
+ } |
+ } |
+ } |
+ }, |
+ |
+ highlightAll: function(async, callback) { |
+ var elements = document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'); |
+ |
+ for (var i=0, element; element = elements[i++];) { |
+ _.highlightElement(element, async === true, callback); |
+ } |
+ }, |
+ |
+ highlightElement: function(element, async, callback) { |
+ // Find language |
+ var language, grammar, parent = element; |
+ |
+ while (parent && !lang.test(parent.className)) { |
+ parent = parent.parentNode; |
+ } |
+ |
+ if (parent) { |
+ language = (parent.className.match(lang) || [,''])[1]; |
+ grammar = _.languages[language]; |
+ } |
+ |
+ if (!grammar) { |
+ return; |
+ } |
+ |
+ // Set language on the element, if not present |
+ element.className = element.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language; |
+ |
+ // Set language on the parent, for styling |
+ parent = element.parentNode; |
+ |
+ if (/pre/i.test(parent.nodeName)) { |
+ parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language; |
+ } |
+ |
+ var code = element.textContent; |
+ |
+ if(!code) { |
+ return; |
+ } |
+ |
+ code = code.replace(/^(?:\r?\n|\r)/,''); |
+ |
+ var env = { |
+ element: element, |
+ language: language, |
+ grammar: grammar, |
+ code: code |
+ }; |
+ |
+ _.hooks.run('before-highlight', env); |
+ |
+ if (async && self.Worker) { |
+ var worker = new Worker(_.filename); |
+ |
+ worker.onmessage = function(evt) { |
+ env.highlightedCode = Token.stringify(JSON.parse(evt.data), language); |
+ |
+ _.hooks.run('before-insert', env); |
+ |
+ env.element.innerHTML = env.highlightedCode; |
+ |
+ callback && callback.call(env.element); |
+ _.hooks.run('after-highlight', env); |
+ }; |
+ |
+ worker.postMessage(JSON.stringify({ |
+ language: env.language, |
+ code: env.code |
+ })); |
+ } |
+ else { |
+ env.highlightedCode = _.highlight(env.code, env.grammar, env.language); |
+ |
+ _.hooks.run('before-insert', env); |
+ |
+ env.element.innerHTML = env.highlightedCode; |
+ |
+ callback && callback.call(element); |
+ |
+ _.hooks.run('after-highlight', env); |
+ } |
+ }, |
+ |
+ highlight: function (text, grammar, language) { |
+ var tokens = _.tokenize(text, grammar); |
+ return Token.stringify(_.util.encode(tokens), language); |
+ }, |
+ |
+ tokenize: function(text, grammar, language) { |
+ var Token = _.Token; |
+ |
+ var strarr = [text]; |
+ |
+ var rest = grammar.rest; |
+ |
+ if (rest) { |
+ for (var token in rest) { |
+ grammar[token] = rest[token]; |
+ } |
+ |
+ delete grammar.rest; |
+ } |
+ |
+ tokenloop: for (var token in grammar) { |
+ if(!grammar.hasOwnProperty(token) || !grammar[token]) { |
+ continue; |
+ } |
+ |
+ var patterns = grammar[token]; |
+ patterns = (_.util.type(patterns) === "Array") ? patterns : [patterns]; |
+ |
+ for (var j = 0; j < patterns.length; ++j) { |
+ var pattern = patterns[j], |
+ inside = pattern.inside, |
+ lookbehind = !!pattern.lookbehind, |
+ lookbehindLength = 0, |
+ alias = pattern.alias; |
+ |
+ pattern = pattern.pattern || pattern; |
+ |
+ for (var i=0; i<strarr.length; i++) { // Don’t cache length as it changes during the loop |
+ |
+ var str = strarr[i]; |
+ |
+ if (strarr.length > text.length) { |
+ // Something went terribly wrong, ABORT, ABORT! |
+ break tokenloop; |
+ } |
+ |
+ if (str instanceof Token) { |
+ continue; |
+ } |
+ |
+ pattern.lastIndex = 0; |
+ |
+ var match = pattern.exec(str); |
+ |
+ if (match) { |
+ if(lookbehind) { |
+ lookbehindLength = match[1].length; |
+ } |
+ |
+ var from = match.index - 1 + lookbehindLength, |
+ match = match[0].slice(lookbehindLength), |
+ len = match.length, |
+ to = from + len, |
+ before = str.slice(0, from + 1), |
+ after = str.slice(to + 1); |
+ |
+ var args = [i, 1]; |
+ |
+ if (before) { |
+ args.push(before); |
+ } |
+ |
+ var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias); |
+ |
+ args.push(wrapped); |
+ |
+ if (after) { |
+ args.push(after); |
+ } |
+ |
+ Array.prototype.splice.apply(strarr, args); |
+ } |
+ } |
+ } |
+ } |
+ |
+ return strarr; |
+ }, |
+ |
+ hooks: { |
+ all: {}, |
+ |
+ add: function (name, callback) { |
+ var hooks = _.hooks.all; |
+ |
+ hooks[name] = hooks[name] || []; |
+ |
+ hooks[name].push(callback); |
+ }, |
+ |
+ run: function (name, env) { |
+ var callbacks = _.hooks.all[name]; |
+ |
+ if (!callbacks || !callbacks.length) { |
+ return; |
+ } |
+ |
+ for (var i=0, callback; callback = callbacks[i++];) { |
+ callback(env); |
+ } |
+ } |
+ } |
+}; |
+ |
+var Token = _.Token = function(type, content, alias) { |
+ this.type = type; |
+ this.content = content; |
+ this.alias = alias; |
+}; |
+ |
+Token.stringify = function(o, language, parent) { |
+ if (typeof o == 'string') { |
+ return o; |
+ } |
+ |
+ if (_.util.type(o) === 'Array') { |
+ return o.map(function(element) { |
+ return Token.stringify(element, language, o); |
+ }).join(''); |
+ } |
+ |
+ var env = { |
+ type: o.type, |
+ content: Token.stringify(o.content, language, parent), |
+ tag: 'span', |
+ classes: ['token', o.type], |
+ attributes: {}, |
+ language: language, |
+ parent: parent |
+ }; |
+ |
+ if (env.type == 'comment') { |
+ env.attributes['spellcheck'] = 'true'; |
+ } |
+ |
+ if (o.alias) { |
+ var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; |
+ Array.prototype.push.apply(env.classes, aliases); |
+ } |
+ |
+ _.hooks.run('wrap', env); |
+ |
+ var attributes = ''; |
+ |
+ for (var name in env.attributes) { |
+ attributes += name + '="' + (env.attributes[name] || '') + '"'; |
+ } |
+ |
+ return '<' + env.tag + ' class="' + env.classes.join(' ') + '" ' + attributes + '>' + env.content + '</' + env.tag + '>'; |
+ |
+}; |
+ |
+if (!self.document) { |
+ if (!self.addEventListener) { |
+ // in Node.js |
+ return self.Prism; |
+ } |
+ // In worker |
+ self.addEventListener('message', function(evt) { |
+ var message = JSON.parse(evt.data), |
+ lang = message.language, |
+ code = message.code; |
+ |
+ self.postMessage(JSON.stringify(_.util.encode(_.tokenize(code, _.languages[lang])))); |
+ self.close(); |
+ }, false); |
+ |
+ return self.Prism; |
+} |
+ |
+// Get current script and highlight |
+var script = document.getElementsByTagName('script'); |
+ |
+script = script[script.length - 1]; |
+ |
+if (script) { |
+ _.filename = script.src; |
+ |
+ if (document.addEventListener && !script.hasAttribute('data-manual')) { |
+ document.addEventListener('DOMContentLoaded', _.highlightAll); |
+ } |
+} |
+ |
+return self.Prism; |
+ |
+})(); |
+ |
+if (typeof module !== 'undefined' && module.exports) { |
+ module.exports = Prism; |
+} |
+ |
+ |
+/* ********************************************** |
+ Begin prism-markup.js |
+********************************************** */ |
+ |
+Prism.languages.markup = { |
+ 'comment': /<!--[\w\W]*?-->/, |
+ 'prolog': /<\?.+?\?>/, |
+ 'doctype': /<!DOCTYPE.+?>/, |
+ 'cdata': /<!\[CDATA\[[\w\W]*?]]>/i, |
+ 'tag': { |
+ pattern: /<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/i, |
+ inside: { |
+ 'tag': { |
+ pattern: /^<\/?[\w:-]+/i, |
+ inside: { |
+ 'punctuation': /^<\/?/, |
+ 'namespace': /^[\w-]+?:/ |
+ } |
+ }, |
+ 'attr-value': { |
+ pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i, |
+ inside: { |
+ 'punctuation': /=|>|"/ |
+ } |
+ }, |
+ 'punctuation': /\/?>/, |
+ 'attr-name': { |
+ pattern: /[\w:-]+/, |
+ inside: { |
+ 'namespace': /^[\w-]+?:/ |
+ } |
+ } |
+ |
+ } |
+ }, |
+ 'entity': /&#?[\da-z]{1,8};/i |
+}; |
+ |
+// Plugin to make entity title show the real entity, idea by Roman Komarov |
+Prism.hooks.add('wrap', function(env) { |
+ |
+ if (env.type === 'entity') { |
+ env.attributes['title'] = env.content.replace(/&/, '&'); |
+ } |
+}); |
+ |
+ |
+/* ********************************************** |
+ Begin prism-css.js |
+********************************************** */ |
+ |
+Prism.languages.css = { |
+ 'comment': /\/\*[\w\W]*?\*\//, |
+ 'atrule': { |
+ pattern: /@[\w-]+?.*?(;|(?=\s*\{))/i, |
+ inside: { |
+ 'punctuation': /[;:]/ |
+ } |
+ }, |
+ 'url': /url\((?:(["'])(\\\n|\\?.)*?\1|.*?)\)/i, |
+ 'selector': /[^\{\}\s][^\{\};]*(?=\s*\{)/, |
+ 'string': /("|')(\\\n|\\?.)*?\1/, |
+ 'property': /(\b|\B)[\w-]+(?=\s*:)/i, |
+ 'important': /\B!important\b/i, |
+ 'punctuation': /[\{\};:]/, |
+ 'function': /[-a-z0-9]+(?=\()/i |
+}; |
+ |
+if (Prism.languages.markup) { |
+ Prism.languages.insertBefore('markup', 'tag', { |
+ 'style': { |
+ pattern: /<style[\w\W]*?>[\w\W]*?<\/style>/i, |
+ inside: { |
+ 'tag': { |
+ pattern: /<style[\w\W]*?>|<\/style>/i, |
+ inside: Prism.languages.markup.tag.inside |
+ }, |
+ rest: Prism.languages.css |
+ }, |
+ alias: 'language-css' |
+ } |
+ }); |
+ |
+ Prism.languages.insertBefore('inside', 'attr-value', { |
+ 'style-attr': { |
+ pattern: /\s*style=("|').*?\1/i, |
+ inside: { |
+ 'attr-name': { |
+ pattern: /^\s*style/i, |
+ inside: Prism.languages.markup.tag.inside |
+ }, |
+ 'punctuation': /^\s*=\s*['"]|['"]\s*$/, |
+ 'attr-value': { |
+ pattern: /.+/i, |
+ inside: Prism.languages.css |
+ } |
+ }, |
+ alias: 'language-css' |
+ } |
+ }, Prism.languages.markup.tag); |
+} |
+ |
+/* ********************************************** |
+ Begin prism-clike.js |
+********************************************** */ |
+ |
+Prism.languages.clike = { |
+ 'comment': [ |
+ { |
+ pattern: /(^|[^\\])\/\*[\w\W]*?\*\//, |
+ lookbehind: true |
+ }, |
+ { |
+ pattern: /(^|[^\\:])\/\/.*/, |
+ lookbehind: true |
+ } |
+ ], |
+ 'string': /("|')(\\\n|\\?.)*?\1/, |
+ 'class-name': { |
+ pattern: /((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i, |
+ lookbehind: true, |
+ inside: { |
+ punctuation: /(\.|\\)/ |
+ } |
+ }, |
+ 'keyword': /\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/, |
+ 'boolean': /\b(true|false)\b/, |
+ 'function': { |
+ pattern: /[a-z0-9_]+\(/i, |
+ inside: { |
+ punctuation: /\(/ |
+ } |
+ }, |
+ 'number': /\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/, |
+ 'operator': /[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|~|\^|%/, |
+ 'ignore': /&(lt|gt|amp);/i, |
+ 'punctuation': /[{}[\];(),.:]/ |
+}; |
+ |
+ |
+/* ********************************************** |
+ Begin prism-javascript.js |
+********************************************** */ |
+ |
+Prism.languages.javascript = Prism.languages.extend('clike', { |
+ 'keyword': /\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/, |
+ 'number': /\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|-?Infinity)\b/, |
+ 'function': /(?!\d)[a-z0-9_$]+(?=\()/i |
+}); |
+ |
+Prism.languages.insertBefore('javascript', 'keyword', { |
+ 'regex': { |
+ pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/, |
+ lookbehind: true |
+ } |
+}); |
+ |
+if (Prism.languages.markup) { |
+ Prism.languages.insertBefore('markup', 'tag', { |
+ 'script': { |
+ pattern: /<script[\w\W]*?>[\w\W]*?<\/script>/i, |
+ inside: { |
+ 'tag': { |
+ pattern: /<script[\w\W]*?>|<\/script>/i, |
+ inside: Prism.languages.markup.tag.inside |
+ }, |
+ rest: Prism.languages.javascript |
+ }, |
+ alias: 'language-javascript' |
+ } |
+ }); |
+} |
+ |
+ |
+/* ********************************************** |
+ Begin prism-file-highlight.js |
+********************************************** */ |
+ |
+(function () { |
+ if (!self.Prism || !self.document || !document.querySelector) { |
+ return; |
+ } |
+ |
+ self.Prism.fileHighlight = function() { |
+ |
+ var Extensions = { |
+ 'js': 'javascript', |
+ 'html': 'markup', |
+ 'svg': 'markup', |
+ 'xml': 'markup', |
+ 'py': 'python', |
+ 'rb': 'ruby', |
+ 'ps1': 'powershell', |
+ 'psm1': 'powershell' |
+ }; |
+ |
+ Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function(pre) { |
+ var src = pre.getAttribute('data-src'); |
+ var extension = (src.match(/\.(\w+)$/) || [,''])[1]; |
+ var language = Extensions[extension] || extension; |
+ |
+ var code = document.createElement('code'); |
+ code.className = 'language-' + language; |
+ |
+ pre.textContent = ''; |
+ |
+ code.textContent = 'Loading…'; |
+ |
+ pre.appendChild(code); |
+ |
+ var xhr = new XMLHttpRequest(); |
+ |
+ xhr.open('GET', src, true); |
+ |
+ xhr.onreadystatechange = function() { |
+ if (xhr.readyState == 4) { |
+ |
+ if (xhr.status < 400 && xhr.responseText) { |
+ code.textContent = xhr.responseText; |
+ |
+ Prism.highlightElement(code); |
+ } |
+ else if (xhr.status >= 400) { |
+ code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText; |
+ } |
+ else { |
+ code.textContent = '✖ Error: File does not exist or is empty'; |
+ } |
+ } |
+ }; |
+ |
+ xhr.send(null); |
+ }); |
+ |
+ }; |
+ |
+ self.Prism.fileHighlight(); |
+ |
+})(); |