feed format behaviour

This commit is contained in:
mmacia committed 2026-02-23 21:51:31 +00:00
1 parent 97e2494b33
commit 3446c3aa4d
1 file changed
+22
+22
View File
@@ -0,0 +1,22 @@
defmodule FeedReader.Format do
@moduledoc """
Behaviour implemented by built-in and explicitly supplied feed formats.
Detection examines only the bounded, replayable prefix provided by the caller.
XML formats provide their dedicated Saxy handler and create parser state with
an event sink; normalization returns the standalone feed and item value types.
"""
@callback id() :: atom()
@callback detect(prefix :: binary()) :: :match | :no_match
@callback handler() :: module()
@callback new_parser_state(event_sink :: function(), opts :: keyword()) :: term()
@callback normalize_feed(state :: term(), opts :: keyword()) :: FeedReader.Feed.t()
@callback normalize_item(
raw_item :: map(),
feed :: FeedReader.Feed.t(),
opts :: keyword()
) :: {:ok, FeedReader.Item.t()} | :skip | {:error, term()}
end