Jido.Chat.Markdown (Jido Chat v1.0.0)

Copy Markdown View Source

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

markdown_node()

@type markdown_node() :: Jido.Chat.Markdown.Node.t()

node_input()

@type node_input() :: markdown_node() | map() | String.t()

t()

@type t() :: %Jido.Chat.Markdown{
  metadata: map(),
  root: %Jido.Chat.Markdown.Node{
    align: term(),
    children: term(),
    language: term(),
    level: term(),
    metadata: term(),
    ordered: term(),
    start: term(),
    text: term(),
    type: term(),
    url: term()
  }
}

Functions

blockquote(value)

@spec blockquote([node_input()] | String.t()) :: markdown_node()

Builds a blockquote node.

cell(value)

@spec cell([node_input()] | String.t()) :: markdown_node()

Builds a table cell node.

code(value)

@spec code(String.t()) :: markdown_node()

Builds an inline code node.

code_block(value, language \\ nil, opts \\ [])

@spec code_block(String.t(), String.t() | nil, keyword() | map()) :: markdown_node()

Builds a fenced code block node.

divider()

@spec divider() :: markdown_node()

Builds a divider node.

emphasis(value)

@spec emphasis([node_input()] | String.t()) :: markdown_node()

Builds an emphasis node.

from_map(map)

@spec from_map(map()) :: t()

Builds Markdown from serialized map data.

heading(level, value)

@spec heading(pos_integer(), [node_input()] | String.t()) :: markdown_node()

Builds a heading node.

link(label, url, opts \\ [])

@spec link([node_input()] | String.t(), String.t(), keyword() | map()) ::
  markdown_node()

Builds a link node.

list(items, opts \\ [])

@spec list([node_input()], keyword() | map()) :: markdown_node()

Builds a list node.

list_item(value)

@spec list_item(node_input() | [node_input()]) :: markdown_node()

Builds a list item node.

new(markdown)

@spec new(t() | map() | String.t() | [node_input()]) :: t()

Creates a canonical Markdown document.

paragraph(value)

@spec paragraph([node_input()] | String.t()) :: markdown_node()

Builds a paragraph node.

parse(markdown)

@spec parse(String.t()) :: t()

Parses plain Markdown text into a canonical AST.

plain_text(value)

@spec plain_text(t() | markdown_node() | [node_input()] | String.t() | nil) ::
  String.t()

Extracts plain text from a Markdown document or node.

root(children, opts \\ [])

@spec root([node_input()], keyword() | map()) :: t()

Builds a Markdown document with a root node.

row(cells)

@spec row([node_input()]) :: markdown_node()

Builds a table row node.

schema()

Returns the schema for Markdown documents.

stringify(value)

@spec stringify(t() | markdown_node() | [node_input()] | String.t() | nil) ::
  String.t()

Stringifies a Markdown document or node back to Markdown text.

strong(value)

@spec strong([node_input()] | String.t()) :: markdown_node()

Builds a strong node.

table(rows, opts \\ [])

@spec table([node_input()], keyword() | map()) :: markdown_node()

Builds a table node.

table_to_ascii(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.

text(value)

@spec text(String.t()) :: markdown_node()

Builds a text node.

to_map(markdown)

@spec to_map(t()) :: map()

Serializes Markdown into a plain map with type markers.

walk(markdown, fun)

@spec walk(t() | markdown_node(), (markdown_node() -> markdown_node())) ::
  t() | markdown_node()

Walks and transforms every node in the Markdown AST.