1 |
|
2 |
|
3 |
|
4 | module.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 |