saulecabrera

saulecabrera

Markdownif - Fast and Secure Markdown NIFs built with Rustler and pulldown-cmark

Markdownif implements bindings for pulldown-cmark using Rustler.

Why?

Most of the available libraries that I explored didn’t meet my needs in terms of speed with the exception of markdown. I also wanted to try Rustler and this use case is the perfect fit.

Features

  • Fast: check out the benchmarks
  • Safe: Markdownif defers the NIF execution to the dirty schedulers based on the input size and on measurements around the dirty scheduling overhead.
  • Correct: pulldown-cmark complies 100% with the CommonMark spec

Source: https://github.com/saulecabrera/markdownif

Most Liked

saulecabrera

saulecabrera

Do you support the cmark flags for additional functionality that go beyond the base spec?

@OvermindDL1 Do you mean support for task lists, tables, strikethrough, and footnotes? If that’s the case, those options are indeed supported, when parsing an input you can specify which of these you need, for example:

Markdownif.to_html(input, %Markdownif.Features{tables: true})
OvermindDL1

OvermindDL1

Yep that’s what I meant, awesome thanks!

valpackett

valpackett

Cool! I’ve been thinking of creating a library like this, but with a bonus feature of directly emitting an html tree instead of a string (to avoid reparsing when postprocessing the markdown with HTML processors). I guess I’ll send a PR to this project instead when I come around to doing this :slight_smile:

Where Next?

Popular in Libraries Top

kip
Image is an image processing library for Elixir. It is based upon the fabulous vix library that provides a libvips wrapper for Elixir. I...
574 16576 179
New
devonestes
Introducing assertions, the library that helps you write really great test assertions! GitHub: https://github.com/devonestes/assertions ...
New
arkgil
Hi all! I’m happy to announce that Telemetry v0.3.0 is out! This release marks the conversion from Elixir to Erlang so that all the libr...
New
woutdp
Hi! I wanted to introduce my latest project LiveSvelte. It allows you to render Svelte inside LiveView with end-to-end reactivity. It’s ...
New
josevalim
Yes, yet another parser combinator library! Most of the parser combinators in the ecosystem are either compile-time, often using AST tra...
159 18262 141
New
wmnnd
Hi there, for my project DBLSQD, I needed a file storage solution that is a bit more flexible than Arc. Because I thought others might f...
New
mtrudel
Bandit is an HTTP server for Plug and WebSock apps. Bandit is written entirely in Elixir and is built atop Thousand Island. It can serve...
New
Hal9000
Here is my first stab at this. README pasted below. https://github.com/Hal9000/elixir_random Comments and critiques are welcome. Th...
New
KallDrexx
For a good number of months I've been working on creating a very basic RTMP live video streaming server. Now that I have a very, very ba...
New
anshuman23
Hello all, I have been working on my proposed project called Tensorflex as part of Google Summer of Code 2018.. Tensorflex can be used f...
New

Other popular topics Top

Tee
can someone please explain to me how Enum.reduce works with maps
New
yawaramin
In the Dialyzer docs ( http://erlang.org/doc/man/dialyzer.html#requesting-or-suppressing-warnings-in-source-files ), there is a way to tu...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
myronmarston
The Elixir Typespec docs show the following syntax for keyword lists in typespecs: # ... | [key: type] # keyword lis...
New
danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 27727 240
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New

Sub Categories:

We're in Beta

About us Mission Statement