lib/seo/site/build.ex
defprotocol SEO.Site.Build do
@fallback_to_any true
@moduledoc """
Implement `build/2` which receives your item and conn and returns a `SEO.Site.t` or `nil`
"""
@spec build(term, Plug.Conn.t()) :: SEO.Site.t() | nil
def build(item, conn)
end
defimpl SEO.Site.Build, for: Any do
def build(item, _conn), do: SEO.Site.build(item)
end