diff --git a/swh/web/static/js/highlightjs-line-numbers/dist/highlightjs-line-numbers.min.js b/swh/web/static/js/highlightjs-line-numbers/dist/highlightjs-line-numbers.min.js index f5f5ca5b1..5ef41495d 100644 --- a/swh/web/static/js/highlightjs-line-numbers/dist/highlightjs-line-numbers.min.js +++ b/swh/web/static/js/highlightjs-line-numbers/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=m(".{0}{border-collapse:collapse}.{0} td{padding:0}.{1}:before{content:attr({2})}",[c,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)&&s(r[l],n)}catch(o){t.console.error("LineNumbers error: ",o)}}function s(t,e){if("object"==typeof t){e=e||{singleLine:!1};var n=e.singleLine?0:1,r=i(t),l=a(r);if(l.length>n){for(var s="",o=0,v=l.length;o
{6}
',[u,d,f,g,h,o+1,l[o].length>0?l[o]:" "]);t.innerHTML=m('{1}
',[c,s])}}}function o(t){for(var e="",n=t.innerText.split(/\r\n|\r|\n/g),r=0;rn){for(var o="",s=0,i=l.length;s
{6}
',[g,u,f,p,h,s+1,l[s].length>0?l[s]:" "]);t.innerHTML=m('{1}
',[d,o])}}}function s(t){for(var e="",n=t.innerText.split(/\r\n|\r|\n/g),r=0;r/g,">").replace(/"/g,""").replace(/'/g,"'")}function a(t){var e="",n=t.childNodes;for(var r in n)n.hasOwnProperty(r)&&(e+="hljs-comment"===n[r].className||"hljs-string"===n[r].className?s(n[r]):n[r].childNodes.length?n[r].outerHTML:i(n[r].textContent));return e}function c(t){return 0===t.length?[]:t.split(/\r\n|\r|\n/g)}var d="hljs-ln",u="hljs-ln-line",h="hljs-ln-code",g="hljs-ln-numbers",f="hljs-ln-n",p="data-line-number",m=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=o,n()):t.console.error("highlight.js not detected!")}(window,document); \ No newline at end of file diff --git a/swh/web/static/js/highlightjs-line-numbers/src/highlightjs-line-numbers.js b/swh/web/static/js/highlightjs-line-numbers/src/highlightjs-line-numbers.js index 4e3737184..be914f386 100644 --- a/swh/web/static/js/highlightjs-line-numbers/src/highlightjs-line-numbers.js +++ b/swh/web/static/js/highlightjs-line-numbers/src/highlightjs-line-numbers.js @@ -1,146 +1,154 @@ (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'; // 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; 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; - var text = changeMultilineComments(element); - var lines = getLines(text); + var text = changeMultilineComments(element); + var lines = getLines(text); 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] : ' ' ]); } element.innerHTML = format('{1}
', [ TABLE_NAME, html ]); } } function duplicateMultilineTag(element){ var result = ''; var lines = element.innerText.split(/\r\n|\r|\n/g); for(var i = 0; i/g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); + } + function changeMultilineComments(element) { var result = ''; var children = element.childNodes; - for(var child in children){ + for(var child in children) { if(children.hasOwnProperty(child)) { if(children[child].className === "hljs-comment" || children[child].className === "hljs-string") { result += duplicateMultilineTag(children[child]); } else if(children[child].childNodes.length) { result += children[child].outerHTML; } else { - result += children[child].textContent; + result += escapeHtml(children[child].textContent); } } - } + } return result; } function getLines(text) { if (text.length === 0) return []; return text.split(/\r\n|\r|\n/g); } }(window, document)); \ No newline at end of file