Packages
earmark
1.4.44
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_parser/options.ex
defmodule Earmark.Parser.Options do
# What we use to render
defstruct renderer: Earmark.Parser.HtmlRenderer,
# Inline style options
all: false,
gfm: true,
gfm_tables: false,
breaks: false,
footnotes: false,
footnote_offset: 1,
wikilinks: false,
parse_inline: true,
# allow for annotations
annotations: nil,
# additional prefies for class of code blocks
code_class_prefix: nil,
# Filename and initial line number of the markdown block passed in
# for meaningful error messages
file: "<no file>",
line: 1,
# [{:error|:warning, lnb, text},...]
messages: MapSet.new([]),
pure_links: true,
sub_sup: false,
# deprecated
pedantic: false,
smartypants: false,
timeout: nil
@doc false
def add_deprecations(options, messages)
def add_deprecations(%__MODULE__{smartypants: true} = options, messages) do
add_deprecations(
%{options | smartypants: false},
[
{:deprecated, 0,
"The smartypants option has no effect anymore and will be removed in Earmark.Parser 1.5"}
| messages
]
)
end
def add_deprecations(%__MODULE__{timeout: timeout} = options, messages) when timeout != nil do
add_deprecations(
%{options | timeout: nil},
[
{:deprecated, 0,
"The timeout option has no effect anymore and will be removed in Earmark.Parser 1.5"}
| messages
]
)
end
def add_deprecations(%__MODULE__{pedantic: true} = options, messages) do
add_deprecations(
%{options | pedantic: false},
[
{:deprecated, 0,
"The pedantic option has no effect anymore and will be removed in Earmark.Parser 1.5"}
| messages
]
)
end
def add_deprecations(_options, messages), do: messages
@doc ~S"""
Use normalize before passing it into any API function
iex(1)> options = normalize(annotations: "%%")
...(1)> options.annotations
~r{\A(.*)(%%.*)}
"""
def normalize(options)
def normalize(%__MODULE__{} = options) do
case options.annotations do
%Regex{} ->
options
nil ->
options
_ ->
%{
options
| annotations: Regex.compile!("\\A(.*)(#{Regex.escape(options.annotations)}.*)")
}
end
|> _set_all_if_applicable()
|> _deprecate_old_messages()
end
def normalize(options), do: struct(__MODULE__, options) |> normalize()
defp _deprecate_old_messages(opitons)
defp _deprecate_old_messages(%__MODULE__{messages: %MapSet{}} = options), do: options
defp _deprecate_old_messages(%__MODULE__{} = options) do
%{
options
| messages:
MapSet.new([
{:deprecated, 0,
"messages is an internal option that is ignored and will be removed from the API in v1.5"}
])
}
end
defp _set_all_if_applicable(options)
defp _set_all_if_applicable(%{all: true} = options) do
%{options | breaks: true, footnotes: true, gfm_tables: true, sub_sup: true, wikilinks: true}
end
defp _set_all_if_applicable(options), do: options
end
# SPDX-License-Identifier: Apache-2.0