Converts Markdown to Steam's markup.
:warning: I am rewriting this project to use an internal parser instead of using extensions and custom renderers with Marked. In doing so, the supported syntax will likely change slightly, because some of Markdown's syntax doesn't have an equivalent in Steam's markup. Some of Markdown's syntax will be either disabled or repurposed. For example, while URLs in Steam's markup have [url=//example.com]text[/url]
, images don't have an equivalent, so the ![image name](//example.com/image.png)
syntax might be disabled. Tables in Steam do not support alignment, but do support the noborder
and equalcells
attributes, so the table syntax may look similar to Markdown, but serve a different purpose.
:bow: Also, I've been slow with updates because I haven't been 100% happy with the implementations I've written. Even though they work fine, they don't feel maintainable. Instead of "hand-writing" a parser, I'm currently playing around with PEG.js/Peggy, and hopefully this will result in a maintainable parser.
Go to http://steamdown.vercel.app/
import parse from 'steamdown';
console.log(parse(text));
# read from STDIN
steamdown -
# or
steamdown < file.md
# read from file
steamdown file.md
View the input spec and output spec for an example.
Images are not supported. They render to links. For example,
![example](/image.png)
becomes [url=/image.png]example[/url]
.
[u]
)Wrapping text with __
does not make it bold, but makes it underlined
(__underlined text__
).
[spoiler]
)Wrapping text with !!!
makes it spoiler text (!!!hidden text!!!
).
Quotes can have authors by adding (author)
after text preceded with a >
.
For this reason, continuing a quote on a newline without preceding each line
with a >
is considered undocumented behavior.
>this is some text that I'm
>responding to.
(some person)
[noparse]
)Steam's [noparse]
tag instructs Steam to render text like [b]this[/b]
literally, without styling. In addition to rendering a [noparse]
block,
steamdown's literal text rule will also prevent parsing of the source text.
For example, *this*
would not be converted to [i]this[/i]
.
Text can be made literal by wrapping it with {{{
and }}}
({{{[b]The bold tag is rendered[/b]}}}
).
Any lines between {{{
and }}}
will be rendered without
any parsing.
{{{
[b] is bold
[u] is underline
}}}
Steam supports tables with no borders ([table noborder=1]
) and equal-width cells
([table equalcells=1]
). These are not currently supported. Syntax proposals welcome!