Pandex is a lightweight Elixir wrapper for Pandoc. It has no dependencies other than Pandoc itself. Pandex unit tests are currently run again Pandoc version 2.5.
Pandex enables you to perform any combination of the conversions below:
| Convert From (any) | Convert To (any) |
|---|---|
| commonmark | asciidoc |
| gfm | beamer |
| html | commonmark |
| json | context |
| latex | docbook |
| markdown | dzslides |
| markdown_github * | gfm |
| markdown_mmd | html |
| markdown_phpextra | html5 |
| markdown_strict | json |
| rst | latex |
| textile | man |
| markdown | |
| markdown_github * | |
| markdown_mmd | |
| markdown_phpextra | |
| markdown_strict | |
| mediawiki | |
| opendocument | |
| org | |
| plain | |
| rst | |
| rtf | |
| s5 | |
| slidy | |
| texinfo | |
| textile |
* Deprecated: markdown_github. Use gfm instead.
-
Pandex requires Pandoc to work. Install Pandoc for your operating system.
-
Add Pandex to
mix.exsas follows:
defmodule YourApp.Mixfile do
defp deps do
[
{:pandex, "~> 0.2.0"}
]
end
end- Run
mix deps.getto installPandex.
Pandex follows the syntax of <format-from>_to_<format-to>(<string>).
iex> Pandex.gfm_to_html("# Title \n\n## List\n\n- one\n- two\n- three\n")
{:ok, "<h1 id=\"title\">Title</h1>\n<h2 id=\"list\">List</h2>\n<ul>\n<li>one</li>\n<li>two</li>\n<li>three</li>\n</ul>\n"}
iex> Pandex.latex_to_html5("\\section{Title}\n\n\\subsection{List}\n\n\\begin{itemize}\n\\tightlist\n\\item\n one\n\\item\n two\n\\item\n three\n\\end{itemize}\n")
{:ok, "<h1 id=\"title\">Title</h1>\n<h2 id=\"list\">List</h2>\n<ul>\n<li><p>one</p></li>\n<li><p>two</p></li>\n<li><p>three</p></li>\n</ul>\n"}
iex> Pandex.latex_to_json("\\section{Title}\\label{title}\n\n\\subsection{List}\\label{list}\n\n\\begin{itemize}\n\\item\n one\n\\item\n two\n\\item\n three\n\\end{itemize}\n")
{:ok, "{\"blocks\":[{\"t\":\"Header\",\"c\":[1,[\"title\",[],[]],[{\"t\":\"Str\",\"c\":\"Title\"}]]},{\"t\":\"Header\",\"c\":[2,[\"list\",[],[]],[{\"t\":\"Str\",\"c\":\"List\"}]]},{\"t\":\"BulletList\",\"c\":[[{\"t\":\"Para\",\"c\":[{\"t\":\"Str\",\"c\":\"one\"}]}],[{\"t\":\"Para\",\"c\":[{\"t\":\"Str\",\"c\":\"two\"}]}],[{\"t\":\"Para\",\"c\":[{\"t\":\"Str\",\"c\":\"three\"}]}]]}],\"pandoc-api-version\":[1,17,5,4],\"meta\":{}}\n"}defmodule YourApp do
import Pandex
def convert(string) do
{:ok, output} = markdown_to_html(string)
IO.puts(output)
end
endYou can also give a file as an input. The output will however be a string.
defmodule YourApp do
import Pandex
def convert(file) do
{:ok, output} = markdown_file_to_html(file)
IO.puts(output)
end
end