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

Side by Side 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, 1 month 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 unified diff | Download patch
OLDNEW
1 Prism.hooks.add('after-highlight', function (env) { 1 (function() {
2
3 if (typeof self === 'undefined' || !self.Prism || !self.document) {
4 » return;
5 }
6
7 Prism.hooks.add('complete', function (env) {
8 » if (!env.code) {
9 » » return;
10 » }
11
2 // works only for <code> wrapped inside <pre> (not inline) 12 // works only for <code> wrapped inside <pre> (not inline)
3 var pre = env.element.parentNode; 13 var pre = env.element.parentNode;
4 var clsReg = /\s*\bline-numbers\b\s*/; 14 var clsReg = /\s*\bline-numbers\b\s*/;
5 if ( 15 if (
6 !pre || !/pre/i.test(pre.nodeName) || 16 !pre || !/pre/i.test(pre.nodeName) ||
7 » » // Abort only if nor the <pre> nor the <code> have the class 17 » » » // Abort only if nor the <pre> nor the <code> have the c lass
8 (!clsReg.test(pre.className) && !clsReg.test(env.element.classNa me)) 18 (!clsReg.test(pre.className) && !clsReg.test(env.element.classNa me))
9 ) { 19 ) {
10 return; 20 return;
11 } 21 }
12 22
23 if (env.element.querySelector(".line-numbers-rows")) {
24 // Abort if line numbers already exists
25 return;
26 }
27
13 if (clsReg.test(env.element.className)) { 28 if (clsReg.test(env.element.className)) {
14 // Remove the class "line-numbers" from the <code> 29 // Remove the class "line-numbers" from the <code>
15 env.element.className = env.element.className.replace(clsReg, '' ); 30 env.element.className = env.element.className.replace(clsReg, '' );
16 } 31 }
17 if (!clsReg.test(pre.className)) { 32 if (!clsReg.test(pre.className)) {
18 // Add the class "line-numbers" to the <pre> 33 // Add the class "line-numbers" to the <pre>
19 pre.className += ' line-numbers'; 34 pre.className += ' line-numbers';
20 } 35 }
21 36
22 » var linesNum = (1 + env.code.split('\n').length); 37 » var match = env.code.match(/\n(?!$)/g);
38 » var linesNum = match ? match.length + 1 : 1;
23 var lineNumbersWrapper; 39 var lineNumbersWrapper;
24 40
25 » var lines = new Array(linesNum); 41 » var lines = new Array(linesNum + 1);
26 lines = lines.join('<span></span>'); 42 lines = lines.join('<span></span>');
27 43
28 lineNumbersWrapper = document.createElement('span'); 44 lineNumbersWrapper = document.createElement('span');
29 lineNumbersWrapper.className = 'line-numbers-rows'; 45 lineNumbersWrapper.className = 'line-numbers-rows';
30 lineNumbersWrapper.innerHTML = lines; 46 lineNumbersWrapper.innerHTML = lines;
31 47
32 if (pre.hasAttribute('data-start')) { 48 if (pre.hasAttribute('data-start')) {
33 pre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttrib ute('data-start'), 10) - 1); 49 pre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttrib ute('data-start'), 10) - 1);
34 } 50 }
35 51
36 env.element.appendChild(lineNumbersWrapper); 52 env.element.appendChild(lineNumbersWrapper);
37 53
38 }); 54 });
55
56 }());
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698