revolt-markdown
A markdown parser for Revolt messages.
This package is a fork of discord-markdown by odiffey, itself a fork of discord-markdown by brussell98.
Using
npm install revolt-markdown
yarn add revolt-markdown
For browser use, import revolt-markdown/dist/revolt-markdown.umd.js
import { parser, htmlOutput, toHTML } from 'revolt-markdown';
console.log(toHTML('This **is** a __test__'));
Fenced codeblocks will include highlight.js tags and classes.
Options
import { toHTML } from 'revolt-markdown';
toHTML('This **is** a __test__', options);
options
is an object with the following properties (all are optional):
embed
: Boolean (default: false), if it should parse embed contents (rules are slightly different)escapeHTML
: Boolean (default: true), if it should escape HTMLrevoltOnly
: Boolean (default: false), if it should only parse the Revolt-specific stuffemojiToUnicode
: Boolean (default: true), if the default emojis should be converted to unicoderevoltCallback
: Object, callbacks used for discord parsing. Each (except spoilerAttrib
) receive an object with different properties, and (except emoji
and tex
) are expected to return an HTML escaped string
user
: (id
: String) User mentions "@someperson"channel
: (id
: String) Channel mentions "#somechannel"emoji
: (id
: String) Emoji mentions ":someemoji:". Expects a list of attributes for the img
tagtex
: (content
": String) TeX code. Expects a list of attributes for the span
tagtimestamp
: (timestamp
: Number, style
: String|undefined) Relative timestamp reference "<t:sometimestamp:somestyle>"spoilerAttrib
: object of HTML attributes for the spoiler span. Default is { class: 'd-spoiler' }
cssModuleNames
: Object, maps CSS class names to CSS module class names
Mention and Emoji Handling
Using the revoltCallback
option you can define custom functions to handle parsing mention and emoji content. You can use these to turn IDs into names.
Example:
import { toHTML } from 'revolt-markdown';
toHTML('This is a mention for <@01FEEPCNQBZC7848B169BSYK39>', {
revoltCallback: {
user: node => '@' + users[node.id];
}
});
Customizing
It is possible to change the rules used by revolt-markdown. Take a look at the code to see how to create your own modified rule set.
Contributing
Find an inconsistency? File an issue or submit a pull request with the fix and updated test(s).