| 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);
|
|
|
| -});
|
| +});
|
| +
|
| +}());
|
|
|