diff --git a/yesod-newsfeed/Yesod/AtomFeed.hs b/yesod-newsfeed/Yesod/AtomFeed.hs index 95c03c92..26b500cf 100644 --- a/yesod-newsfeed/Yesod/AtomFeed.hs +++ b/yesod-newsfeed/Yesod/AtomFeed.hs @@ -20,6 +20,7 @@ -- | Generation of Atom newsfeeds. module Yesod.AtomFeed ( atomFeed + , atomFeedText , atomLink , RepAtom (..) , module Yesod.FeedTypes @@ -47,6 +48,11 @@ atomFeed feed = do render <- getUrlRender return $ RepAtom $ toContent $ renderLBS def $ template feed render +-- | Same as @'atomFeed'@ but for @'Feed Text'@. Useful for cases where you are +-- generating a feed of external links. +atomFeedText :: MonadHandler m => Feed Text -> m RepAtom +atomFeedText feed = return $ RepAtom $ toContent $ renderLBS def $ template feed id + template :: Feed url -> (url -> Text) -> Document template Feed {..} render = Document (Prologue [] Nothing []) (addNS root) [] diff --git a/yesod-newsfeed/Yesod/Feed.hs b/yesod-newsfeed/Yesod/Feed.hs index 0dcd2b09..3af91575 100644 --- a/yesod-newsfeed/Yesod/Feed.hs +++ b/yesod-newsfeed/Yesod/Feed.hs @@ -17,6 +17,7 @@ ------------------------------------------------------------------------------- module Yesod.Feed ( newsFeed + , newsFeedText , module Yesod.FeedTypes ) where @@ -29,3 +30,10 @@ newsFeed :: MonadHandler m => Feed (Route (HandlerSite m)) -> m TypedContent newsFeed f = selectRep $ do provideRep $ atomFeed f provideRep $ rssFeed f + +-- | Same as @'newsFeed'@ but for @'Feed Text'@. Useful for cases where you are +-- generating a feed of external links. +newsFeedText :: MonadHandler m => Feed Text -> m TypedContent +newsFeedText f = selectRep $ do + provideRep $ atomFeedText f + provideRep $ rssFeedText f diff --git a/yesod-newsfeed/Yesod/RssFeed.hs b/yesod-newsfeed/Yesod/RssFeed.hs index 8243b4a1..05155fca 100644 --- a/yesod-newsfeed/Yesod/RssFeed.hs +++ b/yesod-newsfeed/Yesod/RssFeed.hs @@ -16,6 +16,7 @@ ------------------------------------------------------------------------------- module Yesod.RssFeed ( rssFeed + , rssFeedText , rssLink , RepRss (..) , module Yesod.FeedTypes @@ -44,6 +45,11 @@ rssFeed feed = do render <- getUrlRender return $ RepRss $ toContent $ renderLBS def $ template feed render +-- | Same as @'rssFeed'@ but for @'Feed Text'@. Useful for cases where you are +-- generating a feed of external links. +rssFeedText :: MonadHandler m => Feed Text -> m RepRss +rssFeedText feed = return $ RepRss $ toContent $ renderLBS def $ template feed id + template :: Feed url -> (url -> Text) -> Document template Feed {..} render = Document (Prologue [] Nothing []) root []