1.0.0 • Published 3 years ago
chat-renderer v1.0.0
Chat-renderer
My chat-renderer for markdown, emoji and highlight.
Example
let { markdown, highlight } = require('chat-renderer');
console.log(await markdown(text));
console.log(await highlight(code, language));API
async markdown(text, [cache, filterFunction, options])
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'soptionsparameter, used when highlighting code in markdown.
Return rendered HTML. Won't throw.
async highlight(code, language[, cache, options])
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 bybeforeandafter. Defaults to['<pre><code>', '</code></pre>'].
Return highlighted code in HTML. Won't throw.
Notes
- Markdown backend is markdown-it.
- GFM is supported.
- By default,
linkifyandhtmlare enabled,typographerandbreaksare 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,
\requireis disabled. - Maths that failed to render would result in displaying error message.
- Maths with spaces within dollar sign like