const hljs = require('highlight.js') const MarkdownIt = require('markdown-it') const markdownItContainer = require('markdown-it-container') const markdownItAnchor = require('markdown-it-anchor') const slugify = require('transliteration').slugify const md = new MarkdownIt({ html: true, highlight: function (str, lang) { str = str.replace(/</g, '<') str = str.replace(/>/g, '>') if (lang && hljs.getLanguage(lang)) { try { return '
' + hljs.highlight(lang, str, true).value + '
' } catch (__) {} } return '
' + md.utils.escapeHtml(str) + '
' } }) .use(markdownItContainer, 'warning') .use(markdownItContainer, 'error') .use(markdownItContainer, 'info') .use(markdownItAnchor, { level: 2, slugify, permalink: true, permalinkBefore: true }) module.exports = (source) => { const content = md.render(source) let scriptStart = content.indexOf('') + ''.length pageScript = content.slice(scriptStart, scriptEnd) } else { scriptStart = 0 } pageHtml.push(content.slice(0, scriptStart)) pageHtml.push(content.slice(scriptEnd)) let output = pageHtml.join('').replace(/\{/g, '{').replace(/\}/g, '}') return ` ${pageScript} ` }