Current section

Files

Jump to
html_to_markdown lib html_to_markdown.ex
Raw

lib/html_to_markdown.ex

# This file is auto-generated by alef — DO NOT EDIT.
# alef:hash:e5642c1988f57cb8bca56edd3c954e4dbc6c61bd984eb65eec79aecc7c99e3a5
# To regenerate: alef generate
# To verify freshness: alef verify --exit-code
# Issues & docs: https://github.com/kreuzberg-dev/alef
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)
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) when is_map(options) do
{visitor, clean_opts} = Map.pop(options, :visitor)
if is_map(visitor) do
{:ok, _} = HtmlToMarkdown.Native.convert_with_visitor(html, if(map_size(clean_opts) == 0, do: nil, else: Jason.encode!(clean_opts)))
do_visitor_receive_loop(visitor)
else
HtmlToMarkdown.Native.convert(html, if(map_size(options) == 0, do: nil, else: Jason.encode!(options)))
end
end
def convert(html, nil) do
HtmlToMarkdown.Native.convert(html, nil)
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)
case result do
:continue -> "continue"
:skip -> "skip"
:preserve_html -> "preserve_html"
{:custom, value} -> to_string(value)
binary when is_binary(binary) -> binary
_ -> "continue"
end
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 "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