summaryrefslogtreecommitdiffstats
path: root/data/resources/prism/plugins/line-numbers/prism-line-numbers.js
diff options
context:
space:
mode:
authorPatrick McDermott <pj@pehjota.net>2017-11-13 11:51:22 (EST)
committer Patrick McDermott <pj@pehjota.net>2017-11-13 11:51:22 (EST)
commitbfbcc54c2f93a7d7a52c1897f7a711c02e6454b0 (patch)
treecf3910200c3bcd922abb7cb8d1723ee1e8d22852 /data/resources/prism/plugins/line-numbers/prism-line-numbers.js
parente42fa02e77211074ba6f7d80f8ea86edfc4a7d0e (diff)
downloadmarquee-bfbcc54c2f93a7d7a52c1897f7a711c02e6454b0.zip
marquee-bfbcc54c2f93a7d7a52c1897f7a711c02e6454b0.tar.gz
marquee-bfbcc54c2f93a7d7a52c1897f7a711c02e6454b0.tar.bz2
data/resources/prism: Rename * source files to *in
Diffstat (limited to 'data/resources/prism/plugins/line-numbers/prism-line-numbers.js')
-rw-r--r--data/resources/prism/plugins/line-numbers/prism-line-numbers.js114
1 files changed, 0 insertions, 114 deletions
diff --git a/data/resources/prism/plugins/line-numbers/prism-line-numbers.js b/data/resources/prism/plugins/line-numbers/prism-line-numbers.js
deleted file mode 100644
index dea8e3a..0000000
--- a/data/resources/prism/plugins/line-numbers/prism-line-numbers.js
+++ /dev/null
@@ -1,114 +0,0 @@
-(function () {
-
- if (typeof self === 'undefined' || !self.Prism || !self.document) {
- return;
- }
-
- /**
- * Class name for <pre> which is activating the plugin
- * @type {String}
- */
- var PLUGIN_CLASS = 'line-numbers';
-
- /**
- * Resizes line numbers spans according to height of line of code
- * @param {Element} element <pre> element
- */
- var _resizeElement = function (element) {
- var codeStyles = getStyles(element);
- var whiteSpace = codeStyles['white-space'];
-
- if (whiteSpace === 'pre-wrap' || whiteSpace === 'pre-line') {
- var codeElement = element.querySelector('code');
- var lineNumbersWrapper = element.querySelector('.line-numbers-rows');
- var lineNumberSizer = element.querySelector('.line-numbers-sizer');
- var codeLines = element.textContent.split('\n');
-
- if (!lineNumberSizer) {
- lineNumberSizer = document.createElement('span');
- lineNumberSizer.className = 'line-numbers-sizer';
-
- codeElement.appendChild(lineNumberSizer);
- }
-
- lineNumberSizer.style.display = 'block';
-
- codeLines.forEach(function (line, lineNumber) {
- lineNumberSizer.textContent = line || '\n';
- var lineSize = lineNumberSizer.getBoundingClientRect().height;
- lineNumbersWrapper.children[lineNumber].style.height = lineSize + 'px';
- });
-
- lineNumberSizer.textContent = '';
- lineNumberSizer.style.display = 'none';
- }
- };
-
- /**
- * Returns style declarations for the element
- * @param {Element} element
- */
- var getStyles = function (element) {
- if (!element) {
- return null;
- }
-
- return window.getComputedStyle ? getComputedStyle(element) : (element.currentStyle || null);
- };
-
- window.addEventListener('resize', function () {
- Array.prototype.forEach.call(document.querySelectorAll('pre.' + PLUGIN_CLASS), _resizeElement);
- });
-
- 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
- (!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, ' ');
- }
- if (!clsReg.test(pre.className)) {
- // Add the class "line-numbers" to the <pre>
- pre.className += ' line-numbers';
- }
-
- var match = env.code.match(/\n(?!$)/g);
- var linesNum = match ? match.length + 1 : 1;
- var lineNumbersWrapper;
-
- var lines = new Array(linesNum + 1);
- lines = lines.join('<span></span>');
-
- lineNumbersWrapper = document.createElement('span');
- lineNumbersWrapper.setAttribute('aria-hidden', 'true');
- lineNumbersWrapper.className = 'line-numbers-rows';
- lineNumbersWrapper.innerHTML = lines;
-
- if (pre.hasAttribute('data-start')) {
- pre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttribute('data-start'), 10) - 1);
- }
-
- env.element.appendChild(lineNumbersWrapper);
-
- _resizeElement(pre);
- });
-
-}()); \ No newline at end of file