Packages

Earmark is a pure-Elixir Markdown converter. It is intended to be used as a library (just call Earmark.as_html), but can also be used as a command-line tool (run mix escript.build first). Output generation is pluggable.

Retired package: Deprecated - Earmark is no longer maintained. Migrate to a replacement, for example MDEx (https://hex.pm/packages/mdex).
Security advisory: This version has known vulnerabilities. View advisories

Current section

Files

Jump to
earmark lib earmark_parser ast emitter.ex
Raw

lib/earmark_parser/ast/emitter.ex

defmodule EarmarkParser.Ast.Emitter do
@moduledoc false
def emit(tag, content \\ [], atts \\ [], meta \\ %{})
def emit(tag, content, atts, meta) when is_binary(content) or is_tuple(content) do
{tag, _to_atts(atts), [content], meta}
end
def emit(tag, content, atts, meta) do
{tag, _to_atts(atts), content, meta}
end
defp _to_atts(atts)
defp _to_atts(nil), do: []
defp _to_atts(atts) when is_map(atts) do
atts
|> Enum.into([])
|> Enum.map(fn {name, value} -> {to_string(name), _to_string(value)} end)
end
defp _to_atts(atts) do
atts
|> Enum.map(fn {name, value} -> {to_string(name), _to_string(value)} end)
end
defp _to_string(value)
defp _to_string(value) when is_list(value), do: Enum.join(value, " ")
defp _to_string(value), do: to_string(value)
end
# SPDX-License-Identifier: Apache-2.0