litemarkup

Unbloated Markdown-like markup language

Usage no npm install needed!

<script type="module">
  import litemarkup from 'https://cdn.skypack.dev/litemarkup';
</script>

README

Unbloated Markdown-like markup language

Why yet another Markdown(-like) compiler/language? What makes LiteMarkup different:

  • Implements only a minimum useful subset of Markdown. Instead of trying to cover all the possible edge cases of "traditional" Markdown, LiteMarkup contains only the most widely used parts of Markdown with some small adjustments. Due to this the minified compiler (parser + HTML emitter) is only 4.41kiB (1.79kiB gzipped!)* and has no implementation dependencies. Despite the increased simplicity, the language remains intuitive and powerful. *measured with Terser.
  • No emphasis on HTML output. Parsing and HTML emitter are separated into two different compiler stages. You can take the AST produced by the parser and implement your custom renderer bypassing the HTML step completely if you don't need it. For example, generate React elements or custom JSON directly from the AST.
  • Written in TypeScript. Use the full power of types when writing AST transformations. Modify the compiler without fear of breaking ton of stuff silently.

Open interactive playground

How to use the compiler

import { parseToAst, astToHtml } from 'litemarkup'

// parse LiteMarkup string into an AST:
const ast = parseToAst(src)
// render an AST into a HTML string
const html = astToHtml(ast)

// shorthand when you don't need the AST:
import { convertToHtml } from 'litemarkup'

convertToHtml(src)

Language tour

# This is a level 1 heading
## This is a level 2 heading
###### This is a level 6 heading

*This text will be bold*
_This text will be italic_

1. Here are
1. Some items
1. In a list
   * As well as
   * List _inside_ of a list!

A [link example](http://example.com).

```foo-lang
some("code here")
```

There can be `inline` code as well.

Escape special characters with single backlash (\\) to treat it as verbatim. Add single backlash to the end of line to force a line break like this: \

> LiteMarkup is pretty easy!\
> \- Someone

---

That was a thematic break (horisontal line)

Open interactive playground

Most notable differences/deviations from the CommonMark specification at the moment:

Contributing

Bugfixes and small enhancements are welcome. It's unlikely I'd like to add any new features. If you feel you need one, make a custom fork.


License: MIT, see LICENSE.md