defmodule Microformats2 do if Code.ensure_loaded?(HTTPotion) do def parse(url) do response = HTTPotion.get(url, follow_redirects: true) if HTTPotion.Response.success?(response) do parse(response.body, url) else :error end end end def parse(content, url) when is_binary(content), do: parse(Floki.parse(content), url) def parse(content, url) do doc = content |> Floki.filter_out("template") |> Floki.filter_out("style") |> Floki.filter_out("script") |> Floki.filter_out(:comment) rels = Microformats2.Rels.parse(doc, url) items = Microformats2.Items.parse(doc, doc, url) %{items: items, rels: rels[:rels], rel_urls: rels[:rel_urls]} end end