From f5857fbf760cb578b755cd0a5d7f3e53742d9cb1 Mon Sep 17 00:00:00 2001 From: Brad Hanks Date: Sat, 17 Feb 2024 20:44:25 -0700 Subject: [PATCH] lib/earmark_parser/line.ex: added Module.t() typespecs --- lib/earmark_parser/line.ex | 238 +++++++++++++++++++++++++++++++++---- 1 file changed, 217 insertions(+), 21 deletions(-) diff --git a/lib/earmark_parser/line.ex b/lib/earmark_parser/line.ex index 54ce40b..eb643da 100644 --- a/lib/earmark_parser/line.ex +++ b/lib/earmark_parser/line.ex @@ -1,67 +1,215 @@ -defmodule EarmarkParser.Line do - +defmodule Earmark.Parser.Line do @moduledoc false + alias Earmark.Parser.Line + + @type annotation :: any() | nil + @type lnb :: integer() + @type line :: String.t() + @type indent :: integer() + @type content :: String.t() + @type ial :: any() | nil + @type type :: String.t() + @type level :: integer() + @type delimiter :: String.t() + @type language :: any() + @type tag :: String.t() + @type complete :: boolean() + @type id :: any() + @type url :: String.t() | URI.t() + @type title :: String.t() + @type bullet :: String.t() + @type initial_indent :: integer() + @type list_indent :: integer() -defmodule Blank do + defmodule Blank do @moduledoc false + + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + content: Line.content() + } + defstruct(annotation: nil, lnb: 0, line: "", indent: -1, content: "") end -defmodule Ruler do + + defmodule Ruler do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + type: Line.type() + } + defstruct(annotation: nil, lnb: 0, line: "", indent: -1, type: "- or * or _") end -defmodule Heading do + defmodule Heading do @moduledoc false - defstruct(annotation: nil, ial: nil, lnb: 0, line: "", indent: -1, level: 1, content: "inline text") + @type t :: %__MODULE__{ + annotation: Line.annotation(), + ial: Line.ial(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + level: Line.level(), + content: Line.content() + } + + defstruct( + annotation: nil, + ial: nil, + lnb: 0, + line: "", + indent: -1, + level: 1, + content: "inline text" + ) end -defmodule BlockQuote do + defmodule BlockQuote do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + ial: Line.ial(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + content: Line.content() + } defstruct(annotation: nil, ial: nil, lnb: 0, line: "", indent: -1, content: "text") end -defmodule Indent do + defmodule Indent do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + level: Line.level(), + content: Line.content() + } + defstruct(annotation: nil, lnb: 0, line: "", indent: -1, level: 0, content: "text") end -defmodule Fence do + defmodule Fence do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + delimiter: Line.delimiter(), + language: Line.language() + } + defstruct(annotation: nil, lnb: 0, line: "", indent: -1, delimiter: "~ or `", language: nil) end -defmodule HtmlOpenTag do + defmodule HtmlOpenTag do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + tag: Line.tag(), + content: Line.content() + } + defstruct(annotation: nil, lnb: 0, line: "", indent: -1, tag: "", content: "") end -defmodule HtmlCloseTag do + defmodule HtmlCloseTag do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + tag: Line.tag() + } + defstruct(annotation: nil, lnb: 0, line: "", indent: -1, tag: "<... to eol") end -defmodule HtmlComment do + + defmodule HtmlComment do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + complete: Line.complete() + } + defstruct(annotation: nil, lnb: 0, line: "", indent: -1, complete: true) end -defmodule HtmlOneLine do + defmodule HtmlOneLine do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + tag: Line.tag(), + content: Line.content() + } + defstruct(annotation: nil, lnb: 0, line: "", indent: -1, tag: "", content: "") end -defmodule IdDef do + defmodule IdDef do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + id: Line.id(), + url: Line.url(), + title: Line.title() + } + defstruct(annotation: nil, lnb: 0, line: "", indent: -1, id: nil, url: nil, title: nil) end -defmodule FnDef do + defmodule FnDef do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + id: Line.id(), + content: Line.content() + } + defstruct(annotation: nil, lnb: 0, line: "", indent: -1, id: nil, content: "text") end -defmodule ListItem do + defmodule ListItem do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + ial: Line.ial(), + lnb: Line.lnb(), + type: Line.type(), + line: Line.line(), + indent: Line.indent(), + bullet: Line.bullet(), + content: Line.content(), + initial_indent: Line.initial_indent(), + list_indent: Line.list_indent() + } + defstruct( annotation: nil, ial: nil, @@ -76,23 +224,71 @@ defmodule ListItem do ) end -defmodule SetextUnderlineHeading do + defmodule SetextUnderlineHeading do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + level: Line.level() + } + defstruct(annotation: nil, lnb: 0, line: "", indent: -1, level: 1) end -defmodule TableLine do + defmodule TableLine do @moduledoc false - defstruct(annotation: nil, lnb: 0, line: "", indent: -1, content: "", columns: 0, is_header: false, needs_header: false) + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + content: Line.content(), + columns: integer(), + is_header: boolean(), + needs_header: boolean() + } + + defstruct( + annotation: nil, + lnb: 0, + line: "", + indent: -1, + content: "", + columns: 0, + is_header: false, + needs_header: false + ) end -defmodule Ial do + defmodule Ial do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + ial: Line.ial(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + attrs: String.t(), + verbatim: String.t() + } + defstruct(annotation: nil, ial: nil, lnb: 0, line: "", indent: -1, attrs: "", verbatim: "") end -defmodule Text do + + defmodule Text do @moduledoc false + @type t :: %__MODULE__{ + annotation: Line.annotation(), + lnb: Line.lnb(), + line: Line.line(), + indent: Line.indent(), + content: Line.content() + } + defstruct(annotation: nil, lnb: 0, line: "", indent: -1, content: "") end end + # SPDX-License-Identifier: Apache-2.0