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 list_info.ex
Raw

lib/earmark/parser/list_info.ex

defmodule Earmark.Parser.ListInfo do
import Earmark.Helpers.LookaheadHelpers, only: [opens_inline_code: 1, still_inline_code: 2]
@moduledoc false
@not_pending {nil, 0}
defstruct(
indent: 0,
pending: @not_pending,
spaced: false,
width: 0)
# INLINE CANDIDATE
def new(%Earmark.Line.ListItem{initial_indent: ii, list_indent: width}=item) do
pending = opens_inline_code(item)
%__MODULE__{indent: ii, pending: pending, width: width}
end
# INLINE CANDIDATE
def update_pending(list_info, line)
def update_pending(%{pending: @not_pending}=info, line) do
pending = opens_inline_code(line)
%{info | pending: pending}
end
def update_pending(%{pending: pending}=info, line) do
pending1 = still_inline_code(line, pending)
%{info | pending: pending1}
end
end