Skip to content

leandrocp/mdex_native

Repository files navigation

MDExNative

Markdown Elixir Native.

Used by:

It uses the following Rust crates:

Most applications should use MDEx directly to benefit from plugins, Document AST, Phoenix LiveView integration, streaming, additional syntax highlighting features, extra formats, MD sigil, and more.

But this project offers direct access to underlying Rust crates when you don't need all those features, or need a bit more performance, or less dependencies.

Installation

Add :mdex_native to your dependencies:

def deps do
  [
    {:mdex_native, "~> 0.1"}
  ]
end

Quickstart

See all examples.

Guides:

Development

export MDEX_NATIVE_BUILD=1
mix setup
mix test

Precompiled Artifacts

Precompiled NIFs are downloaded from GitHub network by default, but you can opt-in to download from CloudFlare:

config :mdex_native, artifact_source: :cloudflare

Since version v0.2.3 and valid values are :github and :cloudflare. Defaults to :github.

Packages

Markdown parsing and rendering.

html = MDExNative.Comrak.markdown_to_html("# Hello")

Comrak options are accepted as keyword lists. See comrak::Options. MDExNative also accepts :sanitize and :syntax_highlight.

html = MDExNative.Comrak.markdown_to_html("- [x] done", extension: [tasklist: true])

It also exposes XML, CommonMark, AST parsing, and heading anchor helpers. See the moduledoc.

HTML sanitization.

html = ~s|<script>alert("xss")</script><p>Hello <strong>MDEx</strong></p>|

MDExNative.Ammonia.safe_html(html)
#=> "<p>Hello <strong>MDEx</strong></p>"

About

Native foundation for MDEx: Comrak, Ammonia, and Lumis.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Contributors