Canonical Markdown AST and formatting helpers.
Summary
Functions
Builds a blockquote node.
Builds a table cell node.
Builds an inline code node.
Builds a fenced code block node.
Builds a divider node.
Builds an emphasis node.
Builds Markdown from serialized map data.
Builds a heading node.
Builds a link node.
Builds a list node.
Builds a list item node.
Creates a canonical Markdown document.
Builds a paragraph node.
Parses plain Markdown text into a canonical AST.
Extracts plain text from a Markdown document or node.
Builds a Markdown document with a root node.
Builds a table row node.
Returns the schema for Markdown documents.
Stringifies a Markdown document or node back to Markdown text.
Builds a strong node.
Builds a table node.
Renders the first table in a Markdown document, or a given table node, as ASCII.
Builds a text node.
Serializes Markdown into a plain map with type markers.
Walks and transforms every node in the Markdown AST.
Types
@type markdown_node() :: Jido.Chat.Markdown.Node.t()
@type node_input() :: markdown_node() | map() | String.t()
Functions
@spec blockquote([node_input()] | String.t()) :: markdown_node()
Builds a blockquote node.
@spec cell([node_input()] | String.t()) :: markdown_node()
Builds a table cell node.
@spec code(String.t()) :: markdown_node()
Builds an inline code node.
@spec code_block(String.t(), String.t() | nil, keyword() | map()) :: markdown_node()
Builds a fenced code block node.
@spec divider() :: markdown_node()
Builds a divider node.
@spec emphasis([node_input()] | String.t()) :: markdown_node()
Builds an emphasis node.
Builds Markdown from serialized map data.
@spec heading(pos_integer(), [node_input()] | String.t()) :: markdown_node()
Builds a heading node.
@spec link([node_input()] | String.t(), String.t(), keyword() | map()) :: markdown_node()
Builds a link node.
@spec list([node_input()], keyword() | map()) :: markdown_node()
Builds a list node.
@spec list_item(node_input() | [node_input()]) :: markdown_node()
Builds a list item node.
@spec new(t() | map() | String.t() | [node_input()]) :: t()
Creates a canonical Markdown document.
@spec paragraph([node_input()] | String.t()) :: markdown_node()
Builds a paragraph node.
Parses plain Markdown text into a canonical AST.
@spec plain_text(t() | markdown_node() | [node_input()] | String.t() | nil) :: String.t()
Extracts plain text from a Markdown document or node.
@spec root([node_input()], keyword() | map()) :: t()
Builds a Markdown document with a root node.
@spec row([node_input()]) :: markdown_node()
Builds a table row node.
Returns the schema for Markdown documents.
@spec stringify(t() | markdown_node() | [node_input()] | String.t() | nil) :: String.t()
Stringifies a Markdown document or node back to Markdown text.
@spec strong([node_input()] | String.t()) :: markdown_node()
Builds a strong node.
@spec table([node_input()], keyword() | map()) :: markdown_node()
Builds a table node.
@spec table_to_ascii(t() | markdown_node()) :: String.t()
Renders the first table in a Markdown document, or a given table node, as ASCII.
@spec text(String.t()) :: markdown_node()
Builds a text node.
Serializes Markdown into a plain map with type markers.
@spec walk(t() | markdown_node(), (markdown_node() -> markdown_node())) :: t() | markdown_node()
Walks and transforms every node in the Markdown AST.