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

Unified Diff: lib/src/prism/plugins/line-numbers/prism-line-numbers.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
Index: lib/src/prism/plugins/line-numbers/prism-line-numbers.js
diff --git a/lib/src/prism/plugins/line-numbers/prism-line-numbers.js b/lib/src/prism/plugins/line-numbers/prism-line-numbers.js
index 9443deb7dc53690eaacaa17f96a4e956a5ff2193..8323a43b13dd56c5fccf2ff473ff95e5fbdb8a0b 100644
--- a/lib/src/prism/plugins/line-numbers/prism-line-numbers.js
+++ b/lib/src/prism/plugins/line-numbers/prism-line-numbers.js
@@ -1,15 +1,30 @@
-Prism.hooks.add('after-highlight', function (env) {
+(function() {
+
+if (typeof self === 'undefined' || !self.Prism || !self.document) {
+ return;
+}
+
+Prism.hooks.add('complete', function (env) {
+ if (!env.code) {
+ return;
+ }
+
// works only for <code> wrapped inside <pre> (not inline)
var pre = env.element.parentNode;
var clsReg = /\s*\bline-numbers\b\s*/;
if (
!pre || !/pre/i.test(pre.nodeName) ||
- // Abort only if nor the <pre> nor the <code> have the class
+ // Abort only if nor the <pre> nor the <code> have the class
(!clsReg.test(pre.className) && !clsReg.test(env.element.className))
) {
return;
}
+ if (env.element.querySelector(".line-numbers-rows")) {
+ // Abort if line numbers already exists
+ return;
+ }
+
if (clsReg.test(env.element.className)) {
// Remove the class "line-numbers" from the <code>
env.element.className = env.element.className.replace(clsReg, '');
@@ -19,10 +34,11 @@ Prism.hooks.add('after-highlight', function (env) {
pre.className += ' line-numbers';
}
- var linesNum = (1 + env.code.split('\n').length);
+ var match = env.code.match(/\n(?!$)/g);
+ var linesNum = match ? match.length + 1 : 1;
var lineNumbersWrapper;
- var lines = new Array(linesNum);
+ var lines = new Array(linesNum + 1);
lines = lines.join('<span></span>');
lineNumbersWrapper = document.createElement('span');
@@ -35,4 +51,6 @@ Prism.hooks.add('after-highlight', function (env) {
env.element.appendChild(lineNumbersWrapper);
-});
+});
+
+}());

Powered by Google App Engine
This is Rietveld 408576698