From 3a4de1355159bf4a2a57986bcb73cd237e9776a3 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Tue, 19 Dec 2023 15:57:32 -0500 Subject: [PATCH] split renderer into steps --- shared/naturalcrit/markdown.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/shared/naturalcrit/markdown.js b/shared/naturalcrit/markdown.js index b0844debc..9a52a82b0 100644 --- a/shared/naturalcrit/markdown.js +++ b/shared/naturalcrit/markdown.js @@ -369,12 +369,21 @@ const processStyleTags = (string)=>{ `${attributes?.length ? ` ${attributes.join(' ')}` : ''}`; }; +let globalLinks = {}; + module.exports = { marked : Marked, render : (rawBrewText)=>{ rawBrewText = rawBrewText.replace(/^\\column$/gm, `\n
\n`) .replace(/^(:+)$/gm, (match)=>`${`
`.repeat(match.length)}\n`); - return Marked.parse(rawBrewText); + const opts = Marked.defaults; + + rawBrewText = opts.hooks.preprocess(rawBrewText); + const tokens = Marked.lexer(rawBrewText, opts); + globalLinks = Object.assign({}, tokens.links); + Marked.walkTokens(tokens, opts.walkTokens); + const html = Marked.parser(tokens, opts); + return opts.hooks.postprocess(html); }, validate : (rawBrewText)=>{