defmodule MeeseeksHtml5ever do @moduledoc """ MeeseeksHtml5ever is intended for internal use by [Meeseeks](https://github.com/mischov/meeseeks), and parses HTML into a `Meeseeks.Document`. """ @doc""" Parses an HTML string into a `Meseeks.Document`. If the string of HTML is larger than 500 bytes, parses asynchronously as to maintain the recommended maximum NIF runtime of 1ms. """ def parse(html) when byte_size(html) > 500 do parse_async(html) end def parse(html) do parse_sync(html) end defp parse_async(html) do MeeseeksHtml5ever.Native.parse_async(html) receive do {:html5ever_nif_result, :ok, result} -> {:ok, result} {:html5ever_nif_result, :error, err} -> {:error, err} end end defp parse_sync(html) do case MeeseeksHtml5ever.Native.parse_sync(html) do {:html5ever_nif_result, :ok, result} -> {:ok, result} {:html5ever_nif_result, :error, err} -> {:error, err} end end end