imm-1.4.0.0: src/lib/Imm/Hooks.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
-- | Hooks module abstracts over the main behavior of the program.
--
-- This module follows the [Handle pattern](https://jaspervdj.be/posts/2018-03-08-handle-pattern.html).
--
-- > import qualified Imm.Hooks as Hooks
module Imm.Hooks where
-- {{{ Imports
import Imm.Feed
import qualified Imm.Logger as Logger
import Imm.Logger hiding(Handle)
import Imm.Prelude
import Imm.Pretty
-- }}}
-- * Types
newtype Handle m = Handle
{ processNewElement :: Feed -> FeedElement -> m () -- ^ Action triggered for each unread feed element
}
-- * Primitives
onNewElement :: Monad m => Logger.Handle m -> Handle m -> Feed -> FeedElement -> m ()
onNewElement logger handle feed element = do
log logger Debug $ "Unread element:" <+> pretty (getTitle element)
processNewElement handle feed element