Skip to content

Latest commit

 

History

283 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cmark

Cmark is a CommonMark toolkit for the MoonBit programming language, started as a MoonBit rewrite of the cmarkit library from the OCaml ecosystem.

So far, it supports the following use cases:

  • Parsing CommonMark documents with best-effort source-aware layout preservation:
  • Rendering CommonMark documents via the Renderer API, along with a ready-to-use HTML renderer.

Supported CommonMark features include:

  • Vanilla CommonMark syntax;
  • Common syntax extensions, including:
    • Strikethroughs
    • Task lists
    • Footnotes
    • Tables
    • Inline math
    • Math blocks

Building

To begin, you will need to install a recent MoonBit toolchain. To do so, please refer to instructions at MoonBit's official website.

Also, a Python installation is required to run the pre-build scripts. You can find relevant instructions from Python's official website.

Once you have the toolchain installed, you can build this project by running the following command:

moon build

CLI

The repository includes a native command-line renderer that follows the basic cmark input model: read Markdown from stdin, -, or one or more file paths and write rendered HTML to stdout.

printf '# Hello\n' | moon run src/cmark_cli -- -
moon run src/cmark_cli -- README.md
moon run src/cmark_cli -- --safe --to xhtml README.md

For reference comparisons, install the upstream CommonMark CLI and compare against the MoonBit executable:

brew install cmark
printf '# Hello\n' | cmark --unsafe
printf '# Hello\n' | moon run src/cmark_cli -- -

Testing

With the MoonBit toolchain installed, you can run the tests by executing the following command:

moon test

Acknowledgements

cmark is built on top several pre-existing projects. Thanks go to:

About

Cmark.mbt is a CommonMark toolkit for MoonBit.

Resources

Stars

36 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages