# Pandex Pandex is a lightweight Elixir wrapper for [Pandoc](http://pandoc.org). 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. # Installation 1. Pandex requires Pandoc to work. [Install Pandoc](http://pandoc.org/installing.html) for your operating system. 2. Add Pandex to `mix.exs` as follows: ```elixir defmodule YourApp.Mixfile do defp deps do [ {:pandex, "~> 0.2.0"} ] end end ``` 3. Run `mix deps.get` to install `Pandex`. # Usage Pandex follows the syntax of `_to_()`. ## Examples ```elixir iex> Pandex.gfm_to_html("# Title \n\n## List\n\n- one\n- two\n- three\n") {:ok, "

Title

\n

List

\n
    \n
  • one
  • \n
  • two
  • \n
  • three
  • \n
\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, "

Title

\n

List

\n
    \n
  • one

  • \n
  • two

  • \n
  • three

  • \n
\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"} ``` ## Using with your app ```elixir defmodule YourApp do import Pandex def convert(string) do {:ok, output} = markdown_to_html(string) IO.puts(output) end end ``` You can also give a file as an input. The output will however be a string. ```elixir defmodule YourApp do import Pandex def convert(file) do {:ok, output} = markdown_file_to_html(file) IO.puts(output) end end ``` # License [MIT License](LICENSE)