aboutsummaryrefslogtreecommitdiff
path: root/node_modules/vuepress/lib/markdown/lineNumbers.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/vuepress/lib/markdown/lineNumbers.js')
-rw-r--r--node_modules/vuepress/lib/markdown/lineNumbers.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/node_modules/vuepress/lib/markdown/lineNumbers.js b/node_modules/vuepress/lib/markdown/lineNumbers.js
new file mode 100644
index 00000000..bc95d2b0
--- /dev/null
+++ b/node_modules/vuepress/lib/markdown/lineNumbers.js
@@ -0,0 +1,26 @@
+// markdown-it plugin for generating line numbers.
+// It depends on preWrapper plugin.
+
+module.exports = md => {
+ const fence = md.renderer.rules.fence
+ md.renderer.rules.fence = (...args) => {
+ const rawCode = fence(...args)
+ const code = rawCode.slice(
+ rawCode.indexOf('<code>'),
+ rawCode.indexOf('</code>')
+ )
+
+ const lines = code.split('\n')
+ const lineNumbersCode = [...Array(lines.length - 1)]
+ .map((line, index) => `<span class="line-number">${index + 1}</span><br>`).join('')
+
+ const lineNumbersWrapperCode =
+ `<div class="line-numbers-wrapper">${lineNumbersCode}</div>`
+
+ const finalCode = rawCode
+ .replace('<!--beforeend-->', `${lineNumbersWrapperCode}<!--beforeend-->`)
+ .replace('extra-class', 'line-numbers-mode')
+
+ return finalCode
+ }
+}