UNPKG

883 BJavaScriptView Raw
1// markdown-it plugin for generating line numbers.
2// It depends on preWrapper plugin.
3
4module.exports = md => {
5 const fence = md.renderer.rules.fence
6 md.renderer.rules.fence = (...args) => {
7 const rawCode = fence(...args)
8 const code = rawCode.slice(
9 rawCode.indexOf('<code>'),
10 rawCode.indexOf('</code>')
11 )
12
13 const lines = code.split('\n')
14 const lineNumbersCode = [...Array(lines.length - 1)]
15 .map((line, index) => `<span class="line-number">${index + 1}</span><br>`).join('')
16
17 const lineNumbersWrapperCode =
18 `<div class="line-numbers-wrapper">${lineNumbersCode}</div>`
19
20 const finalCode = rawCode
21 .replace('<!--beforeend-->', `${lineNumbersWrapperCode}<!--beforeend-->`)
22 .replace('extra-class', 'line-numbers-mode')
23
24 return finalCode
25 }
26 }
27
\No newline at end of file