{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE TypeFamilies #-} -- | __Atom__ extension for RSS. -- Cf specification at . module Text.RSS.Extensions.Atom where -- {{{ Imports import Text.RSS.Extensions import Text.RSS.Types import Conduit hiding (throwM) import Data.Singletons import GHC.Generics import Text.Atom.Conduit.Parse import Text.Atom.Types import Text.XML.Stream.Parse -- }}} -- | __Atom__ tag type. data AtomModule :: * data instance Sing AtomModule = SAtomModule instance SingI AtomModule where sing = SAtomModule instance ParseRssExtension AtomModule where parseRssChannelExtension = AtomChannel <$> (manyYield' atomLink =$= headC) parseRssItemExtension = AtomItem <$> (manyYield' atomLink =$= headC) data instance RssChannelExtension AtomModule = AtomChannel (Maybe AtomLink) deriving(Eq, Generic, Show) data instance RssItemExtension AtomModule = AtomItem (Maybe AtomLink) deriving(Eq, Generic, Show)