SYZOJ's renderer for markdown, math and highlight.
let { markdown, highlight } = require('syzoj-renderer');
console.log(await markdown(text));
console.log(await highlight(code, language));
text
is the Markdown text to be rendered.
cache
is null
or a object with two functions to manipulate a Key-Value store (key
is hashed before passing to cache
):
async get(string key)
async set(string key, string value)
filterFunction(html)
is a function to filter rendered HTML. It can be used to prevent XSS attack. Should return filtered HTML.
options
is a object, may contain:
markdownIt
: Overrides default options innew MarkdownIt(options)
. (See markdown-it)markdownItMath
: Overrides default options inmarkdownIt.use(MathdownItMath, options)
. (See markdown-it-math-loose)markdownItMergeCells
: Set to false to disable markdown-it-merge-cells in markdown tables, which will merge adjacent cells with same content in tableshighlight
: Same ashighlight
'soptions
parameter, used when highlighting code in markdown.
Return rendered HTML. Won't throw.
Highlight some code with syntect.
code
is the code to be highlighted. language
is code
's language.
cache
is same as the parameter in markdown()
.
options
is a object, may contain:
highlighter
: Pass a functionasync function (code, language)
to replace the defualt highlighter.wrapper
: An array[before, after]
. Highlighted code's HTML will be wrapped bybefore
andafter
. Defaults to['<pre><code>', '</code></pre>']
.
Return highlighted code in HTML. Won't throw.
- Markdown backend is markdown-it.
- GFM is supported.
- By default,
linkify
andhtml
are enabled,typographer
andbreaks
are disabled.
- By default, code highlight's backend is syntect.
- A theme CSS is required to display highlighted code properly. See syntect-js's Usage. The default prefix is
hl-
.
- A theme CSS is required to display highlighted code properly. See syntect-js's Usage. The default prefix is
- Math backend is MathJax 3.
- Maths with spaces within dollar sign like
$ a+b $
will work. - Complex maths like
$ \sum\limits_{i=0}^na_i $
won't be broken by Markdown. - To ensure each document's math rendering state isolated,
\require
is disabled. - Maths that failed to render would result in displaying error message.
- Maths with spaces within dollar sign like