From c06c01823b7241deed1dbc84aba36a9ee5fd69c1 Mon Sep 17 00:00:00 2001 From: James Brumond Date: Sat, 13 May 2023 20:12:39 -0700 Subject: [PATCH] add sync inline renderer --- src/render.ts | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/render.ts b/src/render.ts index d204bd4..9bb8134 100644 --- a/src/render.ts +++ b/src/render.ts @@ -69,3 +69,38 @@ export async function render_markdown_to_html(markdown: string, options: Markdow return sanitize_html(unsafe_html, options.custom_elements); } + +export function render_markdown_to_html_inline_sync(markdown: string, options: MarkdownOptions = { }) { + const marked_options: marked.MarkedOptions = { + baseUrl: options.base_url, + breaks: options.breaks || false, + renderer: create_renderer(options), + }; + + marked.use({ + extensions: [ + katex_block_ext(marked_options.renderer, options), + katex_inline_ext(marked_options.renderer, options), + footnote_ref_ext(marked_options.renderer, options), + footnote_list_ext(marked_options.renderer, options), + mark_ext(marked_options.renderer, options), + description_list_ext(marked_options.renderer, options), + section_ext(marked_options.renderer, options), + icon_ext(marked_options.renderer, options), + breadcrumb_nav_ext(marked_options.renderer, options), + ...(options.extensions || [ ]).map((ext) => { + return ext(marked_options.renderer, options); + }), + ], + tokenizer: { + url(src) { + // disable auto-linking; more can be added here to auto-link only sometimes + // see: https://github.com/markedjs/marked/issues/882#issuecomment-781628889 + return null; + } + }, + }); + + const unsafe_html = marked.parseInline(markdown, marked_options); + return sanitize_html(unsafe_html, options.custom_elements); +}