revolt-markdown
v1.0.8
Published
A markdown parser for Revolt messages
Downloads
9
Readme
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__'));
// => This <strong>is</strong> a <u>test</u>
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 (exceptspoilerAttrib
) receive an object with different properties, and (exceptemoji
andtex
) are expected to return an HTML escaped stringuser
: (id
: String) User mentions "@someperson"channel
: (id
: String) Channel mentions "#somechannel"emoji
: (id
: String) Emoji mentions ":someemoji:". Expects a list of attributes for theimg
tagtex
: (content
": String) TeX code. Expects a list of attributes for thespan
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];
}
}); // -> This is a mention for @Austin Huang
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).