Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Unified Diff: lib/src/prism/prism.js

Issue 1418513006: update elements and fix some bugs (Closed) Base URL: git@github.com:dart-lang/polymer_elements.git@master
Patch Set: code review updates Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/src/prism/plugins/wpd/prism-wpd.min.js ('k') | lib/src/prism/tests/helper/components.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/prism/prism.js
diff --git a/lib/src/prism/prism.js b/lib/src/prism/prism.js
index 8282b5719342deb6867ec8c6cb797ed545a7c9e0..f575db3ae87b1530b188fdbe7f600f3391dabd5d 100644
--- a/lib/src/prism/prism.js
+++ b/lib/src/prism/prism.js
@@ -145,7 +145,8 @@ var _ = _self.Prism = {
}
}
},
-
+ plugins: {},
+
highlightAll: function(async, callback) {
var elements = document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');
@@ -177,18 +178,8 @@ var _ = _self.Prism = {
parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language;
}
- if (!grammar) {
- return;
- }
-
var code = element.textContent;
- if(!code) {
- return;
- }
-
- code = code.replace(/^(?:\r?\n|\r)/,'');
-
var env = {
element: element,
language: language,
@@ -196,13 +187,18 @@ var _ = _self.Prism = {
code: code
};
+ if (!code || !grammar) {
+ _.hooks.run('complete', env);
+ return;
+ }
+
_.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);
+ env.highlightedCode = evt.data;
_.hooks.run('before-insert', env);
@@ -210,11 +206,13 @@ var _ = _self.Prism = {
callback && callback.call(env.element);
_.hooks.run('after-highlight', env);
+ _.hooks.run('complete', env);
};
worker.postMessage(JSON.stringify({
language: env.language,
- code: env.code
+ code: env.code,
+ immediateClose: true
}));
}
else {
@@ -227,6 +225,7 @@ var _ = _self.Prism = {
callback && callback.call(element);
_.hooks.run('after-highlight', env);
+ _.hooks.run('complete', env);
}
},
@@ -385,7 +384,7 @@ Token.stringify = function(o, language, parent) {
var attributes = '';
for (var name in env.attributes) {
- attributes += name + '="' + (env.attributes[name] || '') + '"';
+ attributes += (attributes ? ' ' : '') + name + '="' + (env.attributes[name] || '') + '"';
}
return '<' + env.tag + ' class="' + env.classes.join(' ') + '" ' + attributes + '>' + env.content + '</' + env.tag + '>';
@@ -401,10 +400,13 @@ if (!_self.document) {
_self.addEventListener('message', function(evt) {
var message = JSON.parse(evt.data),
lang = message.language,
- code = message.code;
+ code = message.code,
+ immediateClose = message.immediateClose;
- _self.postMessage(JSON.stringify(_.util.encode(_.tokenize(code, _.languages[lang]))));
- _self.close();
+ _self.postMessage(_.highlight(code, _.languages[lang], lang));
+ if (immediateClose) {
+ _self.close();
+ }
}, false);
return _self.Prism;
@@ -431,6 +433,11 @@ if (typeof module !== 'undefined' && module.exports) {
module.exports = Prism;
}
+// hack for components to work correctly in node.js
+if (typeof global !== 'undefined') {
+ global.Prism = Prism;
+}
+
/* **********************************************
Begin prism-markup.js
@@ -442,7 +449,7 @@ Prism.languages.markup = {
'doctype': /<!DOCTYPE[\w\W]+?>/,
'cdata': /<!\[CDATA\[[\w\W]*?]]>/i,
'tag': {
- pattern: /<\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,
+ pattern: /<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,
inside: {
'tag': {
pattern: /^<\/?[^\s>\/]+/i,
@@ -478,6 +485,11 @@ Prism.hooks.add('wrap', function(env) {
}
});
+Prism.languages.xml = Prism.languages.markup;
+Prism.languages.html = Prism.languages.markup;
+Prism.languages.mathml = Prism.languages.markup;
+Prism.languages.svg = Prism.languages.markup;
+
/* **********************************************
Begin prism-css.js
@@ -506,14 +518,9 @@ Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css
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
- },
+ pattern: /(<style[\w\W]*?>)[\w\W]*?(?=<\/style>)/i,
+ lookbehind: true,
+ inside: Prism.languages.css,
alias: 'language-css'
}
});
@@ -552,9 +559,9 @@ Prism.languages.clike = {
lookbehind: true
}
],
- 'string': /("|')(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
+ 'string': /(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
'class-name': {
- pattern: /((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,
+ pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,
lookbehind: true,
inside: {
punctuation: /(\.|\\)/
@@ -563,8 +570,8 @@ Prism.languages.clike = {
'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': /[a-z0-9_]+(?=\()/i,
- 'number': /\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/,
- 'operator': /[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|~|\^|%/,
+ 'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,
+ 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,
'punctuation': /[{}[\];(),.:]/
};
@@ -576,7 +583,8 @@ Prism.languages.clike = {
Prism.languages.javascript = Prism.languages.extend('clike', {
'keyword': /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|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]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,
- 'function': /(?!\d)[a-z0-9_$]+(?=\()/i
+ // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)
+ 'function': /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i
});
Prism.languages.insertBefore('javascript', 'keyword', {
@@ -608,26 +616,22 @@ Prism.languages.insertBefore('javascript', 'class-name', {
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
- },
+ pattern: /(<script[\w\W]*?>)[\w\W]*?(?=<\/script>)/i,
+ lookbehind: true,
+ inside: Prism.languages.javascript,
alias: 'language-javascript'
}
});
}
+Prism.languages.js = Prism.languages.javascript;
/* **********************************************
Begin prism-file-highlight.js
********************************************** */
(function () {
- if (!self.Prism || !self.document || !document.querySelector) {
+ if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
return;
}
« no previous file with comments | « lib/src/prism/plugins/wpd/prism-wpd.min.js ('k') | lib/src/prism/tests/helper/components.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698