yesod-newsfeed 1.0.0.2 → 1.1.0
raw patch · 4 files changed
+40/−51 lines, 4 filesdep +containersdep ~blaze-htmldep ~hamletdep ~xml-conduit
Dependencies added: containers
Dependency ranges changed: blaze-html, hamlet, xml-conduit, yesod-core
Files
- Yesod/AtomFeed.hs +15/−16
- Yesod/FeedTypes.hs +2/−1
- Yesod/RssFeed.hs +16/−18
- yesod-newsfeed.cabal +7/−16
Yesod/AtomFeed.hs view
@@ -31,11 +31,8 @@ import Data.Text (Text) import Data.Text.Lazy (toStrict) import Text.XML-#if MIN_VERSION_blaze_html(0, 5, 0) import Text.Blaze.Html.Renderer.Text (renderHtml)-#else-import Text.Blaze.Renderer.Text (renderHtml)-#endif+import qualified Data.Map as Map newtype RepAtom = RepAtom Content instance HasReps RepAtom where@@ -55,21 +52,22 @@ addNS' n = n namespace = "http://www.w3.org/2005/Atom" - root = Element "feed" [] $ map NodeElement- $ Element "title" [] [NodeContent feedTitle]- : Element "link" [("rel", "self"), ("href", render feedLinkSelf)] []- : Element "link" [("href", render feedLinkHome)] []- : Element "updated" [] [NodeContent $ formatW3 feedUpdated]- : Element "id" [] [NodeContent $ render feedLinkHome]+ root = Element "feed" Map.empty $ map NodeElement+ $ Element "title" Map.empty [NodeContent feedTitle]+ : Element "link" (Map.fromList [("rel", "self"), ("href", render feedLinkSelf)]) []+ : Element "link" (Map.singleton "href" $ render feedLinkHome) []+ : Element "updated" Map.empty [NodeContent $ formatW3 feedUpdated]+ : Element "id" Map.empty [NodeContent $ render feedLinkHome]+ : Element "author" Map.empty [NodeContent feedAuthor] : map (flip entryTemplate render) feedEntries entryTemplate :: FeedEntry url -> (url -> Text) -> Element-entryTemplate FeedEntry {..} render = Element "entry" [] $ map NodeElement- [ Element "id" [] [NodeContent $ render feedEntryLink]- , Element "link" [("href", render feedEntryLink)] []- , Element "updated" [] [NodeContent $ formatW3 feedEntryUpdated]- , Element "title" [] [NodeContent feedEntryTitle]- , Element "content" [("type", "html")] [NodeContent $ toStrict $ renderHtml feedEntryContent]+entryTemplate FeedEntry {..} render = Element "entry" Map.empty $ map NodeElement+ [ Element "id" Map.empty [NodeContent $ render feedEntryLink]+ , Element "link" (Map.singleton "href" $ render feedEntryLink) []+ , Element "updated" Map.empty [NodeContent $ formatW3 feedEntryUpdated]+ , Element "title" Map.empty [NodeContent feedEntryTitle]+ , Element "content" (Map.singleton "type" "html") [NodeContent $ toStrict $ renderHtml feedEntryContent] ] -- | Generates a link tag in the head of a widget.@@ -77,5 +75,6 @@ -> Text -- ^ title -> GWidget s m () atomLink r title = toWidgetHead [hamlet|+$newline never <link href=@{r} type=#{S8.unpack typeAtom} rel="alternate" title=#{title}> |]
Yesod/FeedTypes.hs view
@@ -7,11 +7,12 @@ import Data.Time.Clock (UTCTime) import Data.Text (Text) --- | The overal feed+-- | The overall feed data Feed url = Feed { feedTitle :: Text , feedLinkSelf :: url , feedLinkHome :: url+ , feedAuthor :: Text -- | note: currently only used for Rss
Yesod/RssFeed.hs view
@@ -27,11 +27,8 @@ import Data.Text (Text, pack) import Data.Text.Lazy (toStrict) import Text.XML-#if MIN_VERSION_blaze_html(0, 5, 0) import Text.Blaze.Html.Renderer.Text (renderHtml)-#else-import Text.Blaze.Renderer.Text (renderHtml)-#endif+import qualified Data.Map as Map newtype RepRss = RepRss Content instance HasReps RepRss where@@ -47,26 +44,26 @@ template Feed {..} render = Document (Prologue [] Nothing []) root [] where- root = Element "rss" [("version", "2.0")] $ return $ NodeElement $ Element "channel" [] $ map NodeElement- $ Element "{http://www.w3.org/2005/Atom}link"+ root = Element "rss" (Map.singleton "version" "2.0") $ return $ NodeElement $ Element "channel" Map.empty $ map NodeElement+ $ Element "{http://www.w3.org/2005/Atom}link" (Map.fromList [ ("href", render feedLinkSelf) , ("rel", "self") , ("type", pack $ S8.unpack typeRss)- ] []- : Element "title" [] [NodeContent feedTitle]- : Element "link" [] [NodeContent $ render feedLinkHome]- : Element "description" [] [NodeContent $ toStrict $ renderHtml feedDescription]- : Element "lastBuildDate" [] [NodeContent $ formatRFC822 feedUpdated]- : Element "language" [] [NodeContent feedLanguage]+ ]) []+ : Element "title" Map.empty [NodeContent feedTitle]+ : Element "link" Map.empty [NodeContent $ render feedLinkHome]+ : Element "description" Map.empty [NodeContent $ toStrict $ renderHtml feedDescription]+ : Element "lastBuildDate" Map.empty [NodeContent $ formatRFC822 feedUpdated]+ : Element "language" Map.empty [NodeContent feedLanguage] : map (flip entryTemplate render) feedEntries entryTemplate :: FeedEntry url -> (url -> Text) -> Element-entryTemplate FeedEntry {..} render = Element "item" [] $ map NodeElement- [ Element "title" [] [NodeContent feedEntryTitle]- , Element "link" [] [NodeContent $ render feedEntryLink]- , Element "guid" [] [NodeContent $ render feedEntryLink]- , Element "pubDate" [] [NodeContent $ formatRFC822 feedEntryUpdated]- , Element "description" [] [NodeContent $ toStrict $ renderHtml feedEntryContent]+entryTemplate FeedEntry {..} render = Element "item" Map.empty $ map NodeElement+ [ Element "title" Map.empty [NodeContent feedEntryTitle]+ , Element "link" Map.empty [NodeContent $ render feedEntryLink]+ , Element "guid" Map.empty [NodeContent $ render feedEntryLink]+ , Element "pubDate" Map.empty [NodeContent $ formatRFC822 feedEntryUpdated]+ , Element "description" Map.empty [NodeContent $ toStrict $ renderHtml feedEntryContent] ] -- | Generates a link tag in the head of a widget.@@ -74,5 +71,6 @@ -> Text -- ^ title -> GWidget s m () rssLink r title = toWidgetHead [hamlet|+$newline never <link href=@{r} type=#{S8.unpack typeRss} rel="alternate" title=#{title}> |]
yesod-newsfeed.cabal view
@@ -1,5 +1,5 @@ name: yesod-newsfeed-version: 1.0.0.2+version: 1.1.0 license: MIT license-file: LICENSE author: Michael Snoyman, Patrick Brisbin@@ -12,26 +12,17 @@ homepage: http://www.yesodweb.com/ description: Helper functions and data types for producing News feeds. -flag blaze_html_0_5- description: use blaze-html 0.5 and blaze-markup 0.5- default: True- library build-depends: base >= 4 && < 5- , yesod-core >= 1.0 && < 1.1+ , yesod-core >= 1.1 && < 1.2 , time >= 1.1.4- , hamlet >= 1.0 && < 1.1+ , hamlet >= 1.1 && < 1.2 , bytestring >= 0.9.1.4 , text >= 0.9 && < 0.12- , xml-conduit >= 0.7 && < 0.8-- if flag(blaze_html_0_5)- build-depends:- blaze-html >= 0.5 && < 0.6- , blaze-markup >= 0.5.1 && < 0.6- else- build-depends:- blaze-html >= 0.4 && < 0.5+ , xml-conduit >= 1.0 && < 1.1+ , blaze-html >= 0.5 && < 0.6+ , blaze-markup >= 0.5.1 && < 0.6+ , containers exposed-modules: Yesod.AtomFeed , Yesod.RssFeed