a minimalistic library for inline markdown: 9 features – 10 lines of code – 0 dependencies
sometimes you want some strings (like translation strings, user's profile description, etc.) to allow for some basic styling, but without allowing/requiring HTML. this library is a bunch of regexes that help you easily add support for inline markdown features.
const TinyMarkdown = require('tinymarkdown');
const translations = {
consent: 'i confirm that am **over 18 years old** and have read the [terms of service](/terms).',
}
const html = TinyMarkdown(translations.consent, {links: true});
// 'i confirm that am <strong>over 18 years old</strong> and have read the <a href="/terms">terms of service</a>.'
foo **bar** baz
→ foo <strong>bar</strong> baz
foo _bar_ baz
→ foo <em>bar</em> baz
foo `bar` baz
→ foo <code>bar</code> baz
foo ~~bar~~ baz
→ foo <del>bar</del> baz
foo ==bar== baz
→ foo <mark>bar</mark> baz
foo ^bar^ baz
→ foo <sup>bar</sup> baz
foo ~bar~ baz
→ foo <sub>bar</sub> baz
⚠️ this feature needs to be explicitly enabled with a
{links: true}
param
[foo](/bar)
→ <a href="/bar">foo</a>
external links will automatically be set to open in a new tab:
[foo](https://example.com)
→ <a href="https://example.com" target="_blank" rel="noopener">foo</a>
if you want to force that on local links as well, add a !
before the link:
[foo](!/bar)
→ <a href="/bar" target="_blank" rel="noopener">foo</a>
⚠️ this feature needs to be explicitly enabled with a
{images: true}
param
![foo](/bar.svg)
→ <img src="/bar.svg" alt="foo"/>
node tests.js # run tests
node homepage.js # regenerate homepage from readme