Packages
mdex
0.2.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.5
retired
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Fast and extensible Markdown for Elixir
Current section
Files
Jump to
Current section
Files
examples/liquid.exs
Mix.install([
{:mdex, path: ".."},
{:solid, "~> 0.15"}
])
markdown = """
# [Liquid](https://shopify.github.io/liquid/) Example
{{ lang.name | capitalize }}
"""
assigns = %{"lang" => %{"name" => "elixir"}}
html =
markdown
|> MDEx.parse_document!()
|> MDEx.traverse_and_update(fn
# render each text as liquid template
{node, attrs, children} ->
children =
Enum.reduce(children, [], fn
child, acc when is_binary(child) ->
with {:ok, template} <- Solid.parse(child),
{:ok, rendered} <- Solid.render(template, assigns) do
[to_string(rendered) | acc]
else
_ -> [child | acc]
end
child, acc ->
[child | acc]
end)
|> Enum.reverse()
{node, attrs, children}
end)
|> MDEx.to_html!()
File.write!("liquid.html", html)
IO.puts(html)