| Index: lib/src/prism/plugins/line-highlight/prism-line-highlight.js
|
| diff --git a/lib/src/prism/plugins/line-highlight/prism-line-highlight.js b/lib/src/prism/plugins/line-highlight/prism-line-highlight.js
|
| index 577d142e981e1d616c432a9a4d1869c33ab23900..975357ead96f887508ae63109ff6312dc238117f 100644
|
| --- a/lib/src/prism/plugins/line-highlight/prism-line-highlight.js
|
| +++ b/lib/src/prism/plugins/line-highlight/prism-line-highlight.js
|
| @@ -1,6 +1,6 @@
|
| (function(){
|
|
|
| -if(!window.Prism) {
|
| +if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
|
| return;
|
| }
|
|
|
| @@ -13,13 +13,34 @@ function hasClass(element, className) {
|
| return (" " + element.className + " ").replace(/[\n\t]/g, " ").indexOf(className) > -1
|
| }
|
|
|
| -var CRLF = crlf = /\r?\n|\r/g;
|
| -
|
| +// Some browsers round the line-height, others don't.
|
| +// We need to test for it to position the elements properly.
|
| +var isLineHeightRounded = (function() {
|
| + var res;
|
| + return function() {
|
| + if(typeof res === 'undefined') {
|
| + var d = document.createElement('div');
|
| + d.style.fontSize = '13px';
|
| + d.style.lineHeight = '1.5';
|
| + d.style.padding = 0;
|
| + d.style.border = 0;
|
| + d.innerHTML = ' <br /> ';
|
| + document.body.appendChild(d);
|
| + // Browsers that round the line-height should have offsetHeight === 38
|
| + // The others should have 39.
|
| + res = d.offsetHeight === 38;
|
| + document.body.removeChild(d);
|
| + }
|
| + return res;
|
| + }
|
| +}());
|
| +
|
| function highlightLines(pre, lines, classes) {
|
| var ranges = lines.replace(/\s+/g, '').split(','),
|
| offset = +pre.getAttribute('data-line-offset') || 0;
|
| -
|
| - var lineHeight = parseFloat(getComputedStyle(pre).lineHeight);
|
| +
|
| + var parseMethod = isLineHeightRounded() ? parseInt : parseFloat;
|
| + var lineHeight = parseMethod(getComputedStyle(pre).lineHeight);
|
|
|
| for (var i=0, range; range = ranges[i++];) {
|
| range = range.split('-');
|
| @@ -85,7 +106,7 @@ function applyHash() {
|
|
|
| var fakeTimer = 0; // Hack to limit the number of times applyHash() runs
|
|
|
| -Prism.hooks.add('after-highlight', function(env) {
|
| +Prism.hooks.add('complete', function(env) {
|
| var pre = env.element.parentNode;
|
| var lines = pre && pre.getAttribute('data-line');
|
|
|
|
|