mork

Package Version Hex Docs

MÖRK is a Markdown parser written in pure Gleam, with the ambition to be 100% spec compliant with Commonmark and eventually to implement all of the GFM Markdown extensions as well.

All Commonmark tests from the spec test suite are now passing.

It has mainly been developed for the Erlang compilation target, but the tests all pass on Javascript as well, and running it against the README.md produces identical output. However, regexes do work differently on different Javascript runtimes so I make no guarantees that it will work.

NOTE: This is a very early release of a new implementation of the Commonmark spec, not using the C or javascript implementations at all. As such, it is guaranteed to have bugs, differences in output and poor performance. Buyer beware.

Example

gleam add mork@1
import simplifile
import mork

pub fn main() -> Nil {
  let readme = "./README.md"
  let assert Ok(markdown) = simplifile.read(from: readme)
  let html = markdown |> mork.parse |> mork.to_html
  let assert Ok(_) = html |> simplifile.write(to: "README.html")
}

Further documentation can be found at https://hexdocs.pm/mork.

Development

gleam build        # Build the project
gleam test         # Run the tests
gleam test tabs    # Run only the Tabs section of tests
gleam test tabs 9  # Run only example number 9 from the test section
gleam test custom  # Run only extra tests (not from the spec)

Requirements (Erlang)

Requirements (Javascript)

Search Document