// 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(''), rawCode.indexOf('') ) const lines = code.split('\n') const lineNumbersCode = [...Array(lines.length - 1)] .map((line, index) => `${index + 1}
`).join('') const lineNumbersWrapperCode = `
${lineNumbersCode}
` const finalCode = rawCode .replace('', `${lineNumbersWrapperCode}`) .replace('extra-class', 'line-numbers-mode') return finalCode } }