# This file is auto-generated by alef. DO NOT EDIT. defmodule HtmlToMarkdown do @moduledoc "High-level API for html_to_markdown." @doc "Convert HTML to Markdown, returning a [`ConversionResult`] with content, metadata, images," @spec convert(String.t()) :: {:ok, String.t() | nil} | {:error, String.t()} def convert(html) do HtmlToMarkdown.Native.convert(html, nil, nil) end @doc "Convert HTML to Markdown, returning a [`ConversionResult`] with content, metadata, images," @spec convert(String.t(), String.t() | nil) :: {:ok, String.t() | nil} | {:error, String.t()} def convert(html, options) do HtmlToMarkdown.Native.convert(html, options, nil) end @doc "Convert HTML to Markdown, returning a [`ConversionResult`] with content, metadata, images," @spec convert( String.t(), String.t() | nil, String.t() | nil ) :: {:ok, String.t() | nil} | {:error, String.t()} def convert(html, options, visitor) when is_map(visitor) do :ok = HtmlToMarkdown.Native.convert_with_visitor(html, options, visitor) do_visitor_receive_loop(visitor) end @doc "Convert HTML to Markdown, returning a [`ConversionResult`] with content, metadata, images," @spec convert(String.t(), String.t() | nil, String.t() | nil) :: {:ok, String.t() | nil} | {:error, String.t()} def convert(html, options, visitor) do HtmlToMarkdown.Native.convert(html, options, visitor) end @doc false defp do_visitor_receive_loop(visitor) do receive do {:visitor_callback, ref_id, callback_name, args_json} -> result = case Map.get(visitor, callback_name) do nil -> "continue" fun -> apply_visitor_callback(fun, args_json) end HtmlToMarkdown.Native.visitor_reply(ref_id, result) do_visitor_receive_loop(visitor) {:ok, result} -> {:ok, result} {:error, reason} -> {:error, reason} after 30_000 -> {:error, "visitor callback timeout after 30s"} end end @doc false defp apply_visitor_callback(fun, args_json) do args = Jason.decode!(args_json) result = fun.(args) if is_binary(result), do: result, else: "continue" end @doc "Validate that the header level is within valid range (1-6)." @spec headermetadata_is_valid(map()) :: boolean() def headermetadata_is_valid(obj) do HtmlToMarkdown.Native.headermetadata_is_valid(obj) end @doc "Classify a link based on href value." @spec linkmetadata_classify_link(String.t()) :: map() def linkmetadata_classify_link(href) do HtmlToMarkdown.Native.linkmetadata_classify_link(href) end @doc "Method" @spec conversionoptions_default() :: String.t() | nil def conversionoptions_default do HtmlToMarkdown.Native.conversionoptions_default() end @doc "Create a new builder with default values." @spec conversionoptions_builder() :: reference() def conversionoptions_builder do HtmlToMarkdown.Native.conversionoptions_builder() end @doc "Apply a partial update to these conversion options." @spec conversionoptions_apply_update(map(), String.t() | nil) :: nil def conversionoptions_apply_update(obj, update) do HtmlToMarkdown.Native.conversionoptions_apply_update(obj, update) end @doc "Create from a partial update, applying to defaults." @spec conversionoptions_from_update(String.t() | nil) :: String.t() | nil def conversionoptions_from_update(update) do HtmlToMarkdown.Native.conversionoptions_from_update(update) end @doc "Method" @spec conversionoptions_from(String.t() | nil) :: String.t() | nil def conversionoptions_from(update) do HtmlToMarkdown.Native.conversionoptions_from(update) end @doc "Set the list of HTML tag names whose content is stripped from output." @spec conversionoptionsbuilder_strip_tags(map(), [String.t()]) :: reference() def conversionoptionsbuilder_strip_tags(obj, tags) do HtmlToMarkdown.Native.conversionoptionsbuilder_strip_tags(obj, tags) end @doc "Set the list of HTML tag names that are preserved verbatim in output." @spec conversionoptionsbuilder_preserve_tags(map(), [String.t()]) :: reference() def conversionoptionsbuilder_preserve_tags(obj, tags) do HtmlToMarkdown.Native.conversionoptionsbuilder_preserve_tags(obj, tags) end @doc "Set the list of HTML tag names whose `` children are kept inline." @spec conversionoptionsbuilder_keep_inline_images_in(map(), [String.t()]) :: reference() def conversionoptionsbuilder_keep_inline_images_in(obj, tags) do HtmlToMarkdown.Native.conversionoptionsbuilder_keep_inline_images_in(obj, tags) end @doc "Set the list of CSS selectors for elements to exclude entirely from output." @spec conversionoptionsbuilder_exclude_selectors(map(), [String.t()]) :: reference() def conversionoptionsbuilder_exclude_selectors(obj, selectors) do HtmlToMarkdown.Native.conversionoptionsbuilder_exclude_selectors(obj, selectors) end @doc "Set the pre-processing options applied to the HTML before conversion." @spec conversionoptionsbuilder_preprocessing(map(), String.t() | nil) :: reference() def conversionoptionsbuilder_preprocessing(obj, preprocessing) do HtmlToMarkdown.Native.conversionoptionsbuilder_preprocessing(obj, preprocessing) end @doc "Build the final [`ConversionOptions`]." @spec conversionoptionsbuilder_build(map()) :: String.t() | nil def conversionoptionsbuilder_build(obj) do HtmlToMarkdown.Native.conversionoptionsbuilder_build(obj) end @doc "Method" @spec preprocessingoptions_default() :: String.t() | nil def preprocessingoptions_default do HtmlToMarkdown.Native.preprocessingoptions_default() end @doc "Apply a partial update to these preprocessing options." @spec preprocessingoptions_apply_update(map(), String.t() | nil) :: nil def preprocessingoptions_apply_update(obj, update) do HtmlToMarkdown.Native.preprocessingoptions_apply_update(obj, update) end @doc "Create new preprocessing options from a partial update." @spec preprocessingoptions_from_update(String.t() | nil) :: String.t() | nil def preprocessingoptions_from_update(update) do HtmlToMarkdown.Native.preprocessingoptions_from_update(update) end @doc "Method" @spec preprocessingoptions_from(String.t() | nil) :: String.t() | nil def preprocessingoptions_from(update) do HtmlToMarkdown.Native.preprocessingoptions_from(update) end end