Packages
earmark
1.4.6
1.5.0-pre1
retired
1.5.0-pre
retired
1.4.49
retired
1.4.48
retired
1.4.47
retired
1.4.46
retired
1.4.45
retired
1.4.44
retired
1.4.43
retired
1.4.42
retired
1.4.41
retired
1.4.40
retired
1.4.39
retired
1.4.38
retired
1.4.37
retired
1.4.36
retired
1.4.35
retired
1.4.34
retired
1.4.33
retired
1.4.32
retired
1.4.31
retired
1.4.30
retired
1.4.29
retired
1.4.28
retired
1.4.27
retired
1.4.26
retired
1.4.25
retired
1.4.24
retired
1.4.23
retired
1.4.22
retired
1.4.21
retired
1.4.20
retired
1.4.19
retired
1.4.18
retired
1.4.17
retired
1.4.16
retired
1.4.16-pre2
retired
1.4.16-pre1
retired
1.4.16-pre
retired
1.4.15
retired
1.4.14
retired
1.4.13
retired
1.4.12
retired
1.4.10
retired
1.4.9
retired
1.4.8
retired
1.4.7
retired
1.4.6
retired
1.4.5
retired
1.4.4
retired
1.4.3
retired
1.4.2
retired
1.4.1
retired
1.4.0
retired
1.3.6
retired
1.3.5
retired
1.3.4
retired
1.3.3
retired
1.3.2
retired
1.3.1
retired
1.3.0
retired
1.2.6
retired
1.2.5
retired
1.2.4
retired
1.2.3
retired
1.2.2
retired
1.2.1
retired
1.2.0
retired
1.1.1
retired
1.1.0
retired
1.0.3
retired
1.0.2
retired
1.0.1
retired
1.0.0
retired
0.2.1
retired
0.2.0
retired
0.1.19
retired
0.1.18
retired
0.1.17
retired
0.1.16
retired
0.1.15
retired
0.1.14
retired
0.1.13
retired
0.1.12
retired
0.1.10
retired
0.1.9
retired
0.1.8
retired
0.1.7
retired
0.1.6
retired
0.1.5
retired
0.1.4
retired
0.1.3
retired
0.1.2
retired
0.1.1
retired
0.1.0
retired
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
Current section
Files
lib/earmark/ast/renderer/table_renderer.ex
defmodule Earmark.Ast.Renderer.TableRenderer do
@moduledoc false
alias Earmark.Ast.Inline
alias Earmark.Context
import Earmark.Ast.Emitter
def render_header(header, lnb, aligns, context) do
{th_ast, context1} =
header
|> Enum.zip(aligns)
|> Enum.map_reduce(context, &_render_col(&1, &2, lnb, "th"))
{emit("thead", emit("tr", th_ast)), context1}
end
def render_rows(rows, lnb, aligns, context) do
{rows1, context1} =
rows
|> Enum.zip(Stream.iterate(lnb, &(&1 + 1)))
|> Enum.map_reduce(context, &_render_row(&1, &2, aligns))
{[emit("tbody", rows1)], context1}
end
defp _render_cols(row, lnb, aligns, context, coltype \\ "td") do
row
|> Enum.zip(aligns)
|> Enum.map_reduce(context, &_render_col(&1, &2, lnb, coltype))
end
defp _render_col({col, align}, context, lnb, coltype) do
context1 = Inline.convert(col, lnb, Context.clear_value(context))
{emit(coltype, context1.value |> Enum.reverse, _align_to_style(align)), context1}
end
defp _render_row({row, lnb}, context, aligns) do
{ast, context1} = _render_cols(row, lnb, aligns, context)
{emit("tr", ast), context1}
end
defp _align_to_style(align)
defp _align_to_style(:left), do: [{"style", "text-align: left;"}]
defp _align_to_style(:right), do: [{"style", "text-align: right;"}]
defp _align_to_style(:center), do: [{"style", "text-align: center;"}]
defp _align_to_style(_), do: []
end