From ebe385a5b79a1d79a3eabaf3424a59738ee0b670 Mon Sep 17 00:00:00 2001 From: Yauheni Pakala Date: Wed, 27 Sep 2017 23:15:13 +0300 Subject: [PATCH 1/8] use async --- dist/highlightjs-line-numbers.min.js | 2 +- src/highlightjs-line-numbers.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dist/highlightjs-line-numbers.min.js b/dist/highlightjs-line-numbers.min.js index 188f0b1..5892540 100644 --- a/dist/highlightjs-line-numbers.min.js +++ b/dist/highlightjs-line-numbers.min.js @@ -1 +1 @@ -!function(t,e){"use strict";function n(){var t=e.createElement("style");t.type="text/css",t.innerHTML=f(".{0}{border-collapse:collapse}.{0} td{padding:0}.{1}:before{content:attr({2})}",[o,h,u]),e.getElementsByTagName("head")[0].appendChild(t)}function r(n){"complete"===e.readyState?l(n):t.addEventListener("DOMContentLoaded",function(){l(n)})}function l(n){try{var r=e.querySelectorAll("code.hljs");for(var l in r)r.hasOwnProperty(l)&&s(r[l],n)}catch(i){t.console.error("LineNumbers error: ",i)}}function s(t,e){if("object"==typeof t){e=e||{singleLine:!1};var n=e.singleLine?0:1,r=i(t.innerHTML);if(r.length>n){for(var l="",s=0,g=r.length;s
{6}
',[d,c,h,u,a,s+1,r[s].length>0?r[s]:" "]);t.innerHTML=f('{1}
',[o,l])}}}function i(t){return 0===t.length?[]:t.split(/\r\n|\r|\n/g)}var o="hljs-ln",c="hljs-ln-line",a="hljs-ln-code",d="hljs-ln-numbers",h="hljs-ln-n",u="data-line-number",f=function(t,e){return t.replace(/\{(\d+)\}/g,function(t,n){return e[n]?e[n]:t})};t.hljs?(t.hljs.initLineNumbersOnLoad=r,t.hljs.lineNumbersBlock=s,n()):t.console.error("highlight.js not detected!")}(window,document); \ No newline at end of file +!function(t,e){"use strict";function n(){var t=e.createElement("style");t.type="text/css",t.innerHTML=v(".{0}{border-collapse:collapse}.{0} td{padding:0}.{1}:before{content:attr({2})}",[a,f,g]),e.getElementsByTagName("head")[0].appendChild(t)}function r(n){"complete"===e.readyState?l(n):t.addEventListener("DOMContentLoaded",function(){l(n)})}function l(n){try{var r=e.querySelectorAll("code.hljs");for(var l in r)r.hasOwnProperty(l)&&i(r[l],n)}catch(o){t.console.error("LineNumbers error: ",o)}}function i(t,e){if("object"==typeof t){e=e||{singleLine:!1};var n=e.singleLine?0:1;c(function(){o(t,n)})}}function o(t,e){var n=s(t.innerHTML);if(n.length>e){for(var r="",l=0,i=n.length;l
{6}
',[h,d,f,g,u,l+1,n[l].length>0?n[l]:" "]);t.innerHTML=v('{1}
',[a,r])}}function s(t){return 0===t.length?[]:t.split(/\r\n|\r|\n/g)}function c(e){t.setTimeout(e,0)}var a="hljs-ln",d="hljs-ln-line",u="hljs-ln-code",h="hljs-ln-numbers",f="hljs-ln-n",g="data-line-number",v=function(t,e){return t.replace(/\{(\d+)\}/g,function(t,n){return e[n]?e[n]:t})};t.hljs?(t.hljs.initLineNumbersOnLoad=r,t.hljs.lineNumbersBlock=i,n()):t.console.error("highlight.js not detected!")}(window,document); \ No newline at end of file diff --git a/src/highlightjs-line-numbers.js b/src/highlightjs-line-numbers.js index 8fcd3e2..5f334de 100644 --- a/src/highlightjs-line-numbers.js +++ b/src/highlightjs-line-numbers.js @@ -75,6 +75,13 @@ // convert options var firstLineIndex = !!options.singleLine ? 0 : 1; + async(function () { + addLineNumbersBlockFor(element, firstLineIndex); + }); + } + + function addLineNumbersBlockFor (element, firstLineIndex) { + var lines = getLines(element.innerHTML); if (lines.length > firstLineIndex) { @@ -110,4 +117,8 @@ return text.split(/\r\n|\r|\n/g); } + function async (func) { + w.setTimeout(func, 0); + } + }(window, document)); \ No newline at end of file From 5aad84493ee10c65fc28dfb1f9a4471917f902aa Mon Sep 17 00:00:00 2001 From: Yauheni Pakala Date: Sun, 18 Feb 2018 02:08:19 +0300 Subject: [PATCH 2/8] Add fix --- src/highlightjs-line-numbers.js | 49 +++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/src/highlightjs-line-numbers.js b/src/highlightjs-line-numbers.js index 5f334de..1a9a3d6 100644 --- a/src/highlightjs-line-numbers.js +++ b/src/highlightjs-line-numbers.js @@ -6,7 +6,8 @@ CODE_BLOCK_NAME = 'hljs-ln-code', NUMBERS_BLOCK_NAME = 'hljs-ln-numbers', NUMBER_LINE_NAME = 'hljs-ln-n', - DATA_ATTR_NAME = 'data-line-number'; + DATA_ATTR_NAME = 'data-line-number', + BREAK_LINE_REGEXP = /\r\n|\r|\n/g; // string format // https://wcoder.github.io/notes/string-format-for-string-formating-in-javascript @@ -76,6 +77,9 @@ var firstLineIndex = !!options.singleLine ? 0 : 1; async(function () { + + dublicateMiltilineNodes(element); + addLineNumbersBlockFor(element, firstLineIndex); }); } @@ -112,9 +116,50 @@ } } + /** + * Recursive method for fix multi-line elements implementation in highlight.js + * Doing deep passage on child nodes. + * @param {HTMLElement} element + */ + function dublicateMiltilineNodes(element) { + var nodes = element.childNodes; + for (var node in nodes){ + if (nodes.hasOwnProperty(node)) { + var child = nodes[node]; + if (getLinesCount(child.textContent) > 0) { + if (child.childNodes.length > 0) { + dublicateMiltilineNodes(child); + } else { + dublicateMiltilineNode(child); + } + } + } + } + } + + /** + * Method for fix multi-line elements implementation in highlight.js + * @param {HTMLElement} element + */ + function dublicateMiltilineNode(element) { + var className = element.parentNode.className; + + if ( ! /hljs-/.test(className)) return; + + var lines = getLines(element.textContent); + for (var i = 0, result = ''; i < lines.length; i++) { + result += format('{1}\n', [ className, lines[i] ]); + } + element.parentNode.innerHTML = result.trim(); + } + function getLines(text) { if (text.length === 0) return []; - return text.split(/\r\n|\r|\n/g); + return text.split(BREAK_LINE_REGEXP); + } + + function getLinesCount(text) { + return (text.trim().match(BREAK_LINE_REGEXP) || []).length; } function async (func) { From b4a8a94016e0e6cffa4e22fd71c96dc8f17e00a8 Mon Sep 17 00:00:00 2001 From: Yauheni Pakala Date: Sun, 18 Feb 2018 02:57:21 +0300 Subject: [PATCH 3/8] Refactoring --- src/highlightjs-line-numbers.js | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/highlightjs-line-numbers.js b/src/highlightjs-line-numbers.js index 1a9a3d6..8b622c2 100644 --- a/src/highlightjs-line-numbers.js +++ b/src/highlightjs-line-numbers.js @@ -1,3 +1,5 @@ +// jshint multistr:true + (function (w, d) { 'use strict'; @@ -9,14 +11,6 @@ DATA_ATTR_NAME = 'data-line-number', BREAK_LINE_REGEXP = /\r\n|\r|\n/g; - // string format - // https://wcoder.github.io/notes/string-format-for-string-formating-in-javascript - var format = function (str, args) { - return str.replace(/\{(\d+)\}/g, function(m, n){ - return args[n] ? args[n] : m; - }); - }; - if (w.hljs) { w.hljs.initLineNumbersOnLoad = initLineNumbersOnLoad; w.hljs.lineNumbersBlock = lineNumbersBlock; @@ -121,7 +115,7 @@ * Doing deep passage on child nodes. * @param {HTMLElement} element */ - function dublicateMiltilineNodes(element) { + function dublicateMiltilineNodes (element) { var nodes = element.childNodes; for (var node in nodes){ if (nodes.hasOwnProperty(node)) { @@ -141,24 +135,25 @@ * Method for fix multi-line elements implementation in highlight.js * @param {HTMLElement} element */ - function dublicateMiltilineNode(element) { + function dublicateMiltilineNode (element) { var className = element.parentNode.className; if ( ! /hljs-/.test(className)) return; var lines = getLines(element.textContent); + for (var i = 0, result = ''; i < lines.length; i++) { result += format('{1}\n', [ className, lines[i] ]); } element.parentNode.innerHTML = result.trim(); } - function getLines(text) { + function getLines (text) { if (text.length === 0) return []; return text.split(BREAK_LINE_REGEXP); } - function getLinesCount(text) { + function getLinesCount (text) { return (text.trim().match(BREAK_LINE_REGEXP) || []).length; } @@ -166,4 +161,15 @@ w.setTimeout(func, 0); } + /** + * {@link https://wcoder.github.io/notes/string-format-for-string-formating-in-javascript} + * @param {string} format + * @param {array} args + */ + function format (format, args) { + return format.replace(/\{(\d+)\}/g, function(m, n){ + return args[n] ? args[n] : m; + }); + } + }(window, document)); \ No newline at end of file From a154c6704761d24b9df91e66e8d449c38cc0b022 Mon Sep 17 00:00:00 2001 From: Yauheni Pakala Date: Thu, 22 Feb 2018 20:14:27 +0300 Subject: [PATCH 4/8] Rename functions. --- src/highlightjs-line-numbers.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/highlightjs-line-numbers.js b/src/highlightjs-line-numbers.js index 8b622c2..e2eda67 100644 --- a/src/highlightjs-line-numbers.js +++ b/src/highlightjs-line-numbers.js @@ -72,7 +72,7 @@ async(function () { - dublicateMiltilineNodes(element); + duplicateMultilineNodes(element); addLineNumbersBlockFor(element, firstLineIndex); }); @@ -115,16 +115,16 @@ * Doing deep passage on child nodes. * @param {HTMLElement} element */ - function dublicateMiltilineNodes (element) { + function duplicateMultilineNodes (element) { var nodes = element.childNodes; for (var node in nodes){ if (nodes.hasOwnProperty(node)) { var child = nodes[node]; if (getLinesCount(child.textContent) > 0) { if (child.childNodes.length > 0) { - dublicateMiltilineNodes(child); + duplicateMultilineNodes(child); } else { - dublicateMiltilineNode(child); + duplicateMultilineNode(child); } } } @@ -135,7 +135,7 @@ * Method for fix multi-line elements implementation in highlight.js * @param {HTMLElement} element */ - function dublicateMiltilineNode (element) { + function duplicateMultilineNode (element) { var className = element.parentNode.className; if ( ! /hljs-/.test(className)) return; From 04e34b44fa50a78e944f16725056605b0c688af0 Mon Sep 17 00:00:00 2001 From: Yauheni Pakala Date: Thu, 22 Feb 2018 20:37:56 +0300 Subject: [PATCH 5/8] Refactoring common function. --- src/highlightjs-line-numbers.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/highlightjs-line-numbers.js b/src/highlightjs-line-numbers.js index e2eda67..b57589d 100644 --- a/src/highlightjs-line-numbers.js +++ b/src/highlightjs-line-numbers.js @@ -74,13 +74,13 @@ duplicateMultilineNodes(element); - addLineNumbersBlockFor(element, firstLineIndex); + element.innerHTML = addLineNumbersBlockFor(element.innerHTML, firstLineIndex); }); } - function addLineNumbersBlockFor (element, firstLineIndex) { + function addLineNumbersBlockFor (inputHtml, firstLineIndex) { - var lines = getLines(element.innerHTML); + var lines = getLines(inputHtml); if (lines.length > firstLineIndex) { var html = ''; @@ -106,8 +106,10 @@ ]); } - element.innerHTML = format('{1}
', [ TABLE_NAME, html ]); + return format('{1}
', [ TABLE_NAME, html ]); } + + return inputHtml; } /** From ef844a3b59c331e7030f3de51e002642a3cb81ab Mon Sep 17 00:00:00 2001 From: Yauheni Pakala Date: Thu, 22 Feb 2018 20:54:22 +0300 Subject: [PATCH 6/8] Add editorconfig --- .editorconfig | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..34b11d1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ + +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_style = space +indent_size = 4 From 4d4bfe0afc142d67fc39f0bb959e3d4ad9736402 Mon Sep 17 00:00:00 2001 From: Yauheni Pakala Date: Thu, 22 Feb 2018 21:01:11 +0300 Subject: [PATCH 7/8] Replace spaces to tabs. --- gulpfile.js | 16 +- src/highlightjs-line-numbers.js | 348 ++++++++++++++++---------------- 2 files changed, 182 insertions(+), 182 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 358d5aa..e1848f0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -4,11 +4,11 @@ var rename = require("gulp-rename"); var replace = require('gulp-replace'); gulp.task('build', function() { - return gulp.src('src/*.js') - .pipe(uglify()) - .pipe(replace('\\t', '')) - .pipe(rename({ - extname: '.min.js' - })) - .pipe(gulp.dest('dist')); -}); \ No newline at end of file + return gulp.src('src/*.js') + .pipe(uglify()) + .pipe(replace(' ', '')) + .pipe(rename({ + extname: '.min.js' + })) + .pipe(gulp.dest('dist')); +}); diff --git a/src/highlightjs-line-numbers.js b/src/highlightjs-line-numbers.js index b57589d..d44dba1 100644 --- a/src/highlightjs-line-numbers.js +++ b/src/highlightjs-line-numbers.js @@ -1,177 +1,177 @@ // jshint multistr:true (function (w, d) { - 'use strict'; - - var TABLE_NAME = 'hljs-ln', - LINE_NAME = 'hljs-ln-line', - CODE_BLOCK_NAME = 'hljs-ln-code', - NUMBERS_BLOCK_NAME = 'hljs-ln-numbers', - NUMBER_LINE_NAME = 'hljs-ln-n', - DATA_ATTR_NAME = 'data-line-number', - BREAK_LINE_REGEXP = /\r\n|\r|\n/g; - - if (w.hljs) { - w.hljs.initLineNumbersOnLoad = initLineNumbersOnLoad; - w.hljs.lineNumbersBlock = lineNumbersBlock; - - addStyles(); - } else { - w.console.error('highlight.js not detected!'); - } - - function addStyles () { - var css = d.createElement('style'); - css.type = 'text/css'; - css.innerHTML = format( - '.{0}{border-collapse:collapse}\ - .{0} td{padding:0}\ - .{1}:before{content:attr({2})}', - [ - TABLE_NAME, - NUMBER_LINE_NAME, - DATA_ATTR_NAME - ]); - d.getElementsByTagName('head')[0].appendChild(css); - } - - function initLineNumbersOnLoad (options) { - if (d.readyState === 'complete') { - documentReady(options); - } else { - w.addEventListener('DOMContentLoaded', function () { - documentReady(options); - }); - } - } - - function documentReady (options) { - try { - var blocks = d.querySelectorAll('code.hljs'); - - for (var i in blocks) { - if (blocks.hasOwnProperty(i)) { - lineNumbersBlock(blocks[i], options); - } - } - } catch (e) { - w.console.error('LineNumbers error: ', e); - } - } - - function lineNumbersBlock (element, options) { - if (typeof element !== 'object') return; - - // define options or set default - options = options || { - singleLine: false - }; - - // convert options - var firstLineIndex = !!options.singleLine ? 0 : 1; - - async(function () { - - duplicateMultilineNodes(element); - - element.innerHTML = addLineNumbersBlockFor(element.innerHTML, firstLineIndex); - }); - } - - function addLineNumbersBlockFor (inputHtml, firstLineIndex) { - - var lines = getLines(inputHtml); - - if (lines.length > firstLineIndex) { - var html = ''; - - for (var i = 0, l = lines.length; i < l; i++) { - html += format( - '\ - \ -
\ - \ - \ -
{6}
\ - \ - ', - [ - NUMBERS_BLOCK_NAME, - LINE_NAME, - NUMBER_LINE_NAME, - DATA_ATTR_NAME, - CODE_BLOCK_NAME, - i + 1, - lines[i].length > 0 ? lines[i] : ' ' - ]); - } - - return format('{1}
', [ TABLE_NAME, html ]); - } - - return inputHtml; - } - - /** - * Recursive method for fix multi-line elements implementation in highlight.js - * Doing deep passage on child nodes. - * @param {HTMLElement} element - */ - function duplicateMultilineNodes (element) { - var nodes = element.childNodes; - for (var node in nodes){ - if (nodes.hasOwnProperty(node)) { - var child = nodes[node]; - if (getLinesCount(child.textContent) > 0) { - if (child.childNodes.length > 0) { - duplicateMultilineNodes(child); - } else { - duplicateMultilineNode(child); - } - } - } - } - } - - /** - * Method for fix multi-line elements implementation in highlight.js - * @param {HTMLElement} element - */ - function duplicateMultilineNode (element) { - var className = element.parentNode.className; - - if ( ! /hljs-/.test(className)) return; - - var lines = getLines(element.textContent); - - for (var i = 0, result = ''; i < lines.length; i++) { - result += format('{1}\n', [ className, lines[i] ]); - } - element.parentNode.innerHTML = result.trim(); - } - - function getLines (text) { - if (text.length === 0) return []; - return text.split(BREAK_LINE_REGEXP); - } - - function getLinesCount (text) { - return (text.trim().match(BREAK_LINE_REGEXP) || []).length; - } - - function async (func) { - w.setTimeout(func, 0); - } - - /** - * {@link https://wcoder.github.io/notes/string-format-for-string-formating-in-javascript} - * @param {string} format - * @param {array} args - */ - function format (format, args) { - return format.replace(/\{(\d+)\}/g, function(m, n){ - return args[n] ? args[n] : m; - }); - } - -}(window, document)); \ No newline at end of file + 'use strict'; + + var TABLE_NAME = 'hljs-ln', + LINE_NAME = 'hljs-ln-line', + CODE_BLOCK_NAME = 'hljs-ln-code', + NUMBERS_BLOCK_NAME = 'hljs-ln-numbers', + NUMBER_LINE_NAME = 'hljs-ln-n', + DATA_ATTR_NAME = 'data-line-number', + BREAK_LINE_REGEXP = /\r\n|\r|\n/g; + + if (w.hljs) { + w.hljs.initLineNumbersOnLoad = initLineNumbersOnLoad; + w.hljs.lineNumbersBlock = lineNumbersBlock; + + addStyles(); + } else { + w.console.error('highlight.js not detected!'); + } + + function addStyles () { + var css = d.createElement('style'); + css.type = 'text/css'; + css.innerHTML = format( + '.{0}{border-collapse:collapse}\ + .{0} td{padding:0}\ + .{1}:before{content:attr({2})}', + [ + TABLE_NAME, + NUMBER_LINE_NAME, + DATA_ATTR_NAME + ]); + d.getElementsByTagName('head')[0].appendChild(css); + } + + function initLineNumbersOnLoad (options) { + if (d.readyState === 'complete') { + documentReady(options); + } else { + w.addEventListener('DOMContentLoaded', function () { + documentReady(options); + }); + } + } + + function documentReady (options) { + try { + var blocks = d.querySelectorAll('code.hljs'); + + for (var i in blocks) { + if (blocks.hasOwnProperty(i)) { + lineNumbersBlock(blocks[i], options); + } + } + } catch (e) { + w.console.error('LineNumbers error: ', e); + } + } + + function lineNumbersBlock (element, options) { + if (typeof element !== 'object') return; + + // define options or set default + options = options || { + singleLine: false + }; + + // convert options + var firstLineIndex = !!options.singleLine ? 0 : 1; + + async(function () { + + duplicateMultilineNodes(element); + + element.innerHTML = addLineNumbersBlockFor(element.innerHTML, firstLineIndex); + }); + } + + function addLineNumbersBlockFor (inputHtml, firstLineIndex) { + + var lines = getLines(inputHtml); + + if (lines.length > firstLineIndex) { + var html = ''; + + for (var i = 0, l = lines.length; i < l; i++) { + html += format( + '\ + \ +
\ + \ + \ +
{6}
\ + \ + ', + [ + NUMBERS_BLOCK_NAME, + LINE_NAME, + NUMBER_LINE_NAME, + DATA_ATTR_NAME, + CODE_BLOCK_NAME, + i + 1, + lines[i].length > 0 ? lines[i] : ' ' + ]); + } + + return format('{1}
', [ TABLE_NAME, html ]); + } + + return inputHtml; + } + + /** + * Recursive method for fix multi-line elements implementation in highlight.js + * Doing deep passage on child nodes. + * @param {HTMLElement} element + */ + function duplicateMultilineNodes (element) { + var nodes = element.childNodes; + for (var node in nodes){ + if (nodes.hasOwnProperty(node)) { + var child = nodes[node]; + if (getLinesCount(child.textContent) > 0) { + if (child.childNodes.length > 0) { + duplicateMultilineNodes(child); + } else { + duplicateMultilineNode(child); + } + } + } + } + } + + /** + * Method for fix multi-line elements implementation in highlight.js + * @param {HTMLElement} element + */ + function duplicateMultilineNode (element) { + var className = element.parentNode.className; + + if ( ! /hljs-/.test(className)) return; + + var lines = getLines(element.textContent); + + for (var i = 0, result = ''; i < lines.length; i++) { + result += format('{1}\n', [ className, lines[i] ]); + } + element.parentNode.innerHTML = result.trim(); + } + + function getLines (text) { + if (text.length === 0) return []; + return text.split(BREAK_LINE_REGEXP); + } + + function getLinesCount (text) { + return (text.trim().match(BREAK_LINE_REGEXP) || []).length; + } + + function async (func) { + w.setTimeout(func, 0); + } + + /** + * {@link https://wcoder.github.io/notes/string-format-for-string-formating-in-javascript} + * @param {string} format + * @param {array} args + */ + function format (format, args) { + return format.replace(/\{(\d+)\}/g, function(m, n){ + return args[n] ? args[n] : m; + }); + } + +}(window, document)); From 0290e330b02f667005458e7a564d419c51daffb4 Mon Sep 17 00:00:00 2001 From: Yauheni Pakala Date: Thu, 22 Feb 2018 21:04:34 +0300 Subject: [PATCH 8/8] Update version. --- README.md | 4 ++-- bower.json | 2 +- dist/highlightjs-line-numbers.min.js | 2 +- package.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1820f93..5c82fd8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# highlightjs-line-numbers.js [![version](http://img.shields.io/badge/release-v2.1.0-brightgreen.svg?style=flat)](https://github.com/wcoder/highlightjs-line-numbers.js/archive/master.zip) +# highlightjs-line-numbers.js [![version](http://img.shields.io/badge/release-v2.2.0-brightgreen.svg?style=flat)](https://github.com/wcoder/highlightjs-line-numbers.js/archive/master.zip) Highlight.js line numbers plugin. @@ -18,7 +18,7 @@ npm install highlightjs-line-numbers.js #### Getting the library from CDN ```html - + ``` ## Usage diff --git a/bower.json b/bower.json index 084c9e0..f3b3b75 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "highlightjs-line-numbers.js", - "version": "2.1.0", + "version": "2.2.0", "homepage": "https://github.com/wcoder/highlightjs-line-numbers.js", "authors": [ "Yauheni Pakala " diff --git a/dist/highlightjs-line-numbers.min.js b/dist/highlightjs-line-numbers.min.js index 5892540..0ed4344 100644 --- a/dist/highlightjs-line-numbers.min.js +++ b/dist/highlightjs-line-numbers.min.js @@ -1 +1 @@ -!function(t,e){"use strict";function n(){var t=e.createElement("style");t.type="text/css",t.innerHTML=v(".{0}{border-collapse:collapse}.{0} td{padding:0}.{1}:before{content:attr({2})}",[a,f,g]),e.getElementsByTagName("head")[0].appendChild(t)}function r(n){"complete"===e.readyState?l(n):t.addEventListener("DOMContentLoaded",function(){l(n)})}function l(n){try{var r=e.querySelectorAll("code.hljs");for(var l in r)r.hasOwnProperty(l)&&i(r[l],n)}catch(o){t.console.error("LineNumbers error: ",o)}}function i(t,e){if("object"==typeof t){e=e||{singleLine:!1};var n=e.singleLine?0:1;c(function(){o(t,n)})}}function o(t,e){var n=s(t.innerHTML);if(n.length>e){for(var r="",l=0,i=n.length;l
{6}
',[h,d,f,g,u,l+1,n[l].length>0?n[l]:" "]);t.innerHTML=v('{1}
',[a,r])}}function s(t){return 0===t.length?[]:t.split(/\r\n|\r|\n/g)}function c(e){t.setTimeout(e,0)}var a="hljs-ln",d="hljs-ln-line",u="hljs-ln-code",h="hljs-ln-numbers",f="hljs-ln-n",g="data-line-number",v=function(t,e){return t.replace(/\{(\d+)\}/g,function(t,n){return e[n]?e[n]:t})};t.hljs?(t.hljs.initLineNumbersOnLoad=r,t.hljs.lineNumbersBlock=i,n()):t.console.error("highlight.js not detected!")}(window,document); \ No newline at end of file +!function(n,e){"use strict";function t(){var n=e.createElement("style");n.type="text/css",n.innerHTML=h(".{0}{border-collapse:collapse}.{0} td{padding:0}.{1}:before{content:attr({2})}",[f,m,j]),e.getElementsByTagName("head")[0].appendChild(n)}function r(t){"complete"===e.readyState?l(t):n.addEventListener("DOMContentLoaded",function(){l(t)})}function l(t){try{var r=e.querySelectorAll("code.hljs");for(var l in r)r.hasOwnProperty(l)&&i(r[l],t)}catch(o){n.console.error("LineNumbers error: ",o)}}function i(n,e){if("object"==typeof n){e=e||{singleLine:!1};var t=e.singleLine?0:1;u(function(){s(n),n.innerHTML=o(n.innerHTML,t)})}}function o(n,e){var t=c(n);if(t.length>e){for(var r="",l=0,i=t.length;l
{6}
',[p,v,m,j,g,l+1,t[l].length>0?t[l]:" "]);return h('{1}
',[f,r])}return n}function s(n){var e=n.childNodes;for(var t in e)if(e.hasOwnProperty(t)){var r=e[t];d(r.textContent)>0&&(r.childNodes.length>0?s(r):a(r))}}function a(n){var e=n.parentNode.className;if(/hljs-/.test(e)){for(var t=c(n.textContent),r=0,l="";r{1}\n',[e,t[r]]);n.parentNode.innerHTML=l.trim()}}function c(n){return 0===n.length?[]:n.split(L)}function d(n){return(n.trim().match(L)||[]).length}function u(e){n.setTimeout(e,0)}function h(n,e){return n.replace(/\{(\d+)\}/g,function(n,t){return e[t]?e[t]:n})}var f="hljs-ln",v="hljs-ln-line",g="hljs-ln-code",p="hljs-ln-numbers",m="hljs-ln-n",j="data-line-number",L=/\r\n|\r|\n/g;n.hljs?(n.hljs.initLineNumbersOnLoad=r,n.hljs.lineNumbersBlock=i,t()):n.console.error("highlight.js not detected!")}(window,document); \ No newline at end of file diff --git a/package.json b/package.json index a70c0d1..f5a54d0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "highlightjs-line-numbers.js", - "version": "2.1.0", + "version": "2.2.0", "description": "Highlight.js line numbers plugin.", "main": "src/highlightjs-line-numbers.js", "dependencies": {}, pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy