Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/filterkaapi/pandex
Lightweight Elixir wrapper for Pandoc. Convert Markdown, CommonMark, HTML, Latex... to HTML, HTML5, opendocument, rtf, texttile, asciidoc, markdown, json and others
https://github.com/filterkaapi/pandex
Last synced: 2 months ago
JSON representation
Lightweight Elixir wrapper for Pandoc. Convert Markdown, CommonMark, HTML, Latex... to HTML, HTML5, opendocument, rtf, texttile, asciidoc, markdown, json and others
- Host: GitHub
- URL: https://github.com/filterkaapi/pandex
- Owner: FilterKaapi
- License: mit
- Created: 2015-09-11T07:10:12.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2019-05-30T19:33:46.000Z (over 5 years ago)
- Last Synced: 2024-10-05T12:05:16.472Z (3 months ago)
- Language: Elixir
- Homepage:
- Size: 569 KB
- Stars: 57
- Watchers: 2
- Forks: 11
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- freaking_awesome_elixir - Elixir - Lightweight Elixir wrapper for Pandoc. Converts Markdown, CommonMark, HTML, Latex, HTML, HTML5, opendocument, rtf, texttile, asciidoc to each other. (Markdown)
- fucking-awesome-elixir - Pandex - Lightweight Elixir wrapper for Pandoc. Converts Markdown, CommonMark, HTML, Latex, HTML, HTML5, opendocument, rtf, texttile, asciidoc to each other. (Markdown)
- awesome-elixir - Pandex - Lightweight Elixir wrapper for Pandoc. Converts Markdown, CommonMark, HTML, Latex, HTML, HTML5, opendocument, rtf, texttile, asciidoc to each other. (Markdown)
README
# 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
\nList
\n
- \n
- one \n
- two \n
- three \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
\nList
\n- \n
one
\ntwo
\nthree
\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)