packages feed

yesod-newsfeed 1.6.1.0 → 1.7.0.0

raw patch · 5 files changed

+45/−1 lines, 5 files

Files

ChangeLog.md view
@@ -1,5 +1,12 @@ # Changelog +## 1.7++* Add support for Feed Categories+  * RSS: http://www.rssboard.org/rss-specification#ltcategorygtSubelementOfLtitemgt+  * Atom: https://tools.ietf.org/html/rfc4287#section-4.2.2+  * Create the `EntryCategory` datatype+ ## 1.6.1  * Upgrade to yesod-core 1.6.0
Yesod/AtomFeed.hs view
@@ -74,6 +74,15 @@             Nothing -> []             Just (route, _) -> [Element "logo" Map.empty [NodeContent $ render route]] +entryCategoryTemplate :: EntryCategory -> Element+entryCategoryTemplate (EntryCategory mdomain mlabel category) =+  Element "category" (Map.fromList ([("term",category)]+                                   ++ (maybe [] (\d -> [("scheme",d)]) mdomain)+                                   ++ (maybe [] (\l -> [("label",l)])  mlabel)+                                   )++                     ) []+ entryTemplate :: FeedEntry url -> (url -> Text) -> Element entryTemplate FeedEntry {..} render = Element "entry" Map.empty $ map NodeElement $     [ Element "id" Map.empty [NodeContent $ render feedEntryLink]@@ -82,6 +91,7 @@     , Element "title" Map.empty [NodeContent feedEntryTitle]     , Element "content" (Map.singleton "type" "html") [NodeContent $ toStrict $ renderHtml feedEntryContent]     ]+    ++ map entryCategoryTemplate feedEntryCategories     ++     case feedEntryEnclosure of         Nothing -> []
Yesod/FeedTypes.hs view
@@ -2,6 +2,7 @@     ( Feed (..)     , FeedEntry (..)     , EntryEnclosure (..)+    , EntryCategory (..)     ) where  import Text.Hamlet      (Html)@@ -40,6 +41,20 @@     , enclosedMimeType :: Text     } +-- | RSS 2.0 and Atom allow category in a feed entry.+--+-- * [RSS category](http://www.rssboard.org/rss-specification#ltcategorygtSubelementOfLtitemgt)+-- * [Atom category](https://tools.ietf.org/html/rfc4287#section-4.2.2)+--+-- RSS feeds ignore 'categoryLabel'+--+-- @since 1.7+data EntryCategory = EntryCategory+  { categoryDomain :: Maybe Text -- ^ category identifier+  , categoryLabel :: Maybe Text -- ^ Human-readable label Atom only+  , categoryValue :: Text -- ^ identified categorization scheme via URI+  }+ -- | Each feed entry data FeedEntry url = FeedEntry     { feedEntryLink    :: url@@ -51,4 +66,9 @@       -- rel=enclosure>       --       -- @since 1.5+    , feedEntryCategories :: [EntryCategory]+      -- ^ Allows categories data: RSS \<category>+      -- or Atom \<link term=category>+      --+      -- @since 1.7     }
Yesod/RssFeed.hs view
@@ -75,6 +75,7 @@                 ]                 ] + entryTemplate :: FeedEntry url -> (url -> Text) -> Element entryTemplate FeedEntry {..} render = Element "item" Map.empty $ map NodeElement $     [ Element "title" Map.empty [NodeContent feedEntryTitle]@@ -83,6 +84,7 @@     , Element "pubDate" Map.empty [NodeContent $ formatRFC822 feedEntryUpdated]     , Element "description" Map.empty [NodeContent $ toStrict $ renderHtml feedEntryContent]     ]+    ++ map entryCategoryTemplate feedEntryCategories     ++     case feedEntryEnclosure of         Nothing -> []@@ -91,6 +93,11 @@                     (Map.fromList [("type", enclosedMimeType)                                   ,("length", pack $ show enclosedSize)                                   ,("url", render enclosedUrl)]) []]++entryCategoryTemplate :: EntryCategory -> Element+entryCategoryTemplate (EntryCategory mdomain _ category) =+  Element "category" prop [NodeContent category]+  where prop = maybe Map.empty (\domain -> Map.fromList [("domain",domain)]) mdomain  -- | Generates a link tag in the head of a widget. rssLink :: MonadWidget m
yesod-newsfeed.cabal view
@@ -1,5 +1,5 @@ name:            yesod-newsfeed-version:         1.6.1.0+version:         1.7.0.0 license:         MIT license-file:    LICENSE author:          Michael Snoyman, Patrick Brisbin