module Text.Haggis.RSS where import Data.Maybe import Data.Time.Clock import Network.URI import Text.Haggis.Config import Text.Haggis.Types import Text.Haggis.Utils import Text.RSS import System.FilePath generateRSS :: HaggisConfig -> [Page] -> FilePath -> IO () generateRSS conf ps target = fromMaybe (return ()) $ do title <- rssTitle conf desc <- rssDescription conf uri <- rootUri conf let rss = RSS title uri desc [] $ map (buildItem uri) ps return $ writeFile (target "rss.xml") (showXML $ rssToXML rss) where buildItem :: URI -> Page -> Item buildItem baseURI p = concat [basic, tags, date] where basic = [ Title (pageTitle p) , Link (baseURI { uriPath = (uriPath baseURI) pagePath p }) , Description (show $ renderHtml $ pageContent p) ] tags = map (Category Nothing) $ pageTags p date = maybeToList $ fmap (\d -> PubDate (UTCTime d midnight)) (pageDate p) midnight = secondsToDiffTime 0