Packages
earmark_parser
1.4.28
1.4.46
1.4.45
1.4.44
1.4.43
1.4.42
1.4.41
1.4.40
1.4.39
1.4.38
1.4.37
1.4.36
1.4.35
1.4.34
1.4.33
1.4.32
1.4.31
1.4.30
1.4.29
1.4.28
1.4.27
1.4.26
1.4.25
1.4.24
1.4.23
1.4.22
1.4.21
1.4.20
1.4.20-pre
1.4.19
1.4.18
1.4.17
1.4.16
1.4.16-pre2
1.4.16-pre1
1.4.16-pre
1.4.15
1.4.13
1.4.12
1.4.11
1.4.10
1.4.9
1.4.8
AST parser and generator for Markdown
Current section
Files
Jump to
Current section
Files
lib/earmark_parser/parser/list_info.ex
defmodule EarmarkParser.Parser.ListInfo do
import EarmarkParser.Helpers.LookaheadHelpers, only: [opens_inline_code: 1, still_inline_code: 2]
@moduledoc false
@not_pending {nil, 0}
defstruct(
indent: 0,
lines: [],
loose?: false,
pending: @not_pending,
options: %EarmarkParser.Options{},
width: 0
)
def new(%EarmarkParser.Line.ListItem{initial_indent: ii, list_indent: width}=item, options) do
pending = opens_inline_code(item)
%__MODULE__{indent: ii, lines: [item.content], options: options, pending: pending, width: width}
end
def update_list_info(list_info, line, pending_line, loose? \\ false) do
prepend_line(list_info, line) |> _update_rest(pending_line, loose?)
end
def prepend_line(%__MODULE__{lines: lines}=list_info, line) do
%{list_info|lines: [line|lines]}
end
defp _update_rest(%{pending: @not_pending}=list_info, line, loose?) do
pending = opens_inline_code(line)
%{list_info | pending: pending, loose?: loose?}
end
defp _update_rest(%{pending: pending}=list_info, line, loose?) do
pending1 = still_inline_code(line, pending)
%{list_info | pending: pending1, loose?: loose?}
end
end
# SPDX-License-Identifier: Apache-2.0