Earmark—A Pure Elixir Markdown Processor

Build StatusHex.pm

Dependency

{ :earmark, "> x.y.z" }

Usage

API

  html_doc = Earmark.to_html(markdown)

  html_doc = Earmark.to_html(markdown, options)

(See the documentation for to_html for options)

Command line

$ mix escript.build
$ ./earmark file.md

Supports

Standard Gruber markdown.

Extensions

Tables

Github Flavored Markdown tables are supported

    State | Abbrev | Capital
    ----: | :----: | -------
    Texas | TX     | Austin
    Maine | ME     | Augusta

Tables may have leading and trailing vertical bars on each line

    | State | Abbrev | Capital |
    | ----: | :----: | ------- |
    | Texas | TX     | Austin  |
    | Maine | ME     | Augusta |

Tables need not have headers, in which case all column alignments default to left.

    | Texas | TX     | Austin  |
    | Maine | ME     | Augusta |

Currently we assume there are always spaces around interior vertical bars. It isn't clear what the expectation is.

Adding HTML attributes

HTML attributes can be added to any block-level element. We use the Kramdown syntax: add the line {:attrs} following the block.

attrs can be one or more of:

For example:

    # Warning
    {: .red}

    Do not turn off the engine
    if you are at altitude.
    {: .boxed #warning spellcheck="true"}

Limitations

Security

Please be aware that Markdown is not a secure format. It produces HTML from Markdown and HTML. It is your job to sanitize and or filter the output of Markdown.html if you cannot trust the input and are to serve the produced HTML on the Web.

Author

Copyright © 2014 Dave Thomas, The Pragmatic Programmers @/+pragdave, dave@pragprog.com

Licensed under the same terms as Elixir, which is Apache 2.0.

Details

Given a markdown document (as either a list of lines or a string containing newlines), return an HTML representation.

The options are a %Earmark.Options{} structure:

So, to format the document in original and disable smartypants, you'd call

alias Earmark.Options
result = Earmark.to_html(original, %Options{smartypants: false})

LICENSE

Same as Elixir, which is Apache License v2.0. Please refer to LICENSE for details.