litemarkup
v0.1.10
Published
Unbloated Markdown-like markup language
Downloads
13
Maintainers
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:
- Emphasis and strong emphasis use single
_
and*
characters, respectively. - Settext headings are not supported (use ATX headings (
# foo
) instead) - Indented code blocks are not supported (use fenced code blocks (```) instead)
- Only U+000A (aka
\n
/ LF) is considered line ending. - Only space and tab are considered whitespace characters.
- Tabs have no behaviour.
- thematic breaks do not interrupt paragraph (blank line needed).
- ATX headings cannot have closing sequence.
- Entity and numeric character references are not supported
- Only type 7 HTML blocks are supported (and with some limitations)
- Link reference definitions are not supported
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