diff --git a/Yesod/Helpers/AtomFeed.hs b/Yesod/Helpers/AtomFeed.hs index ac559a4c..e07a585c 100644 --- a/Yesod/Helpers/AtomFeed.hs +++ b/Yesod/Helpers/AtomFeed.hs @@ -26,6 +26,8 @@ import Yesod.Content import Yesod.Handler import Yesod.Widget import Yesod.Helpers.Feed +import Text.Hamlet (Hamlet, xhamlet, hamlet, cdata) +import qualified Data.ByteString.Char8 as S8 newtype RepAtom = RepAtom Content instance HasReps RepAtom where @@ -42,14 +44,14 @@ template arg = [$xhamlet| #endif \ -%feed!xmlns="http://www.w3.org/2005/Atom" - %title $feedTitle.arg$ - %link!rel=self!href=@feedLinkSelf.arg@ - %link!href=@feedLinkHome.arg@ - %updated $formatW3.feedUpdated.arg$ - %id @feedLinkHome.arg@ - $forall feedEntries.arg entry - ^entryTemplate.entry^ +#{feedTitle arg} + #{formatW3 $ feedUpdated arg} + @{feedLinkHome arg} + $forall entry <- feedEntries arg + ^{entryTemplate entry} |] entryTemplate :: FeedEntry url -> Hamlet url @@ -59,12 +61,12 @@ entryTemplate arg = #else [$xhamlet| #endif -%entry - %id @feedEntryLink.arg@ - %link!href=@feedEntryLink.arg@ - %updated $formatW3.feedEntryUpdated.arg$ - %title $feedEntryTitle.arg$ - %content!type=html $cdata.feedEntryContent.arg$ +@{feedEntryLink arg} + #{formatW3 $ feedEntryUpdated arg} + #{feedEntryTitle arg} + <content type=html>#{cdata $ feedEntryContent arg} |] -- | Generates a link tag in the head of a widget. @@ -77,5 +79,5 @@ atomLink u title = addHamletHead #else [$hamlet| #endif -%link!href=@u@!type=$typeAtom$!rel="alternate"!title=$title$ +<link href=@{u} type=#{S8.unpack typeAtom} rel="alternate" title=#{title} |] diff --git a/Yesod/Helpers/RssFeed.hs b/Yesod/Helpers/RssFeed.hs index 0bf6b5b3..90d87122 100644 --- a/Yesod/Helpers/RssFeed.hs +++ b/Yesod/Helpers/RssFeed.hs @@ -22,6 +22,8 @@ import Yesod.Handler import Yesod.Content import Yesod.Widget import Yesod.Helpers.Feed +import Text.Hamlet (Hamlet, xhamlet, hamlet) +import qualified Data.ByteString.Char8 as S8 newtype RepRss = RepRss Content instance HasReps RepRss where @@ -39,18 +41,17 @@ template arg = [$xhamlet| #endif \<?xml version="1.0" encoding="utf-8"?> - %rss!version="2.0"!xmlns:atom="http://www.w3.org/2005/Atom" + <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" + <channel + <atom:link href=@{feedLinkSelf arg} rel="self" type=#{S8.unpack typeRss} + <title> #{feedTitle arg} + <link> @{feedLinkHome arg} + <description> #{feedDescription arg} + <lastBuildDate>#{formatRFC822 $ feedUpdated arg} + <language> #{feedLanguage arg} - %channel - %atom:link!href=@feedLinkSelf.arg@!rel="self"!type=$typeRss$ - %title $feedTitle.arg$ - %link @feedLinkHome.arg@ - %description $feedDescription.arg$ - %lastBuildDate $formatRFC822.feedUpdated.arg$ - %language $feedLanguage.arg$ - - $forall feedEntries.arg entry - ^entryTemplate.entry^ + $forall entry <- feedEntries arg + ^{entryTemplate entry} |] entryTemplate :: FeedEntry url -> Hamlet url @@ -60,12 +61,12 @@ entryTemplate arg = #else [$xhamlet| #endif - %item - %title $feedEntryTitle.arg$ - %link @feedEntryLink.arg@ - %guid @feedEntryLink.arg@ - %pubDate $formatRFC822.feedEntryUpdated.arg$ - %description $feedEntryContent.arg$ + <item + <title> #{feedEntryTitle arg} + <link> @{feedEntryLink arg} + <guid> @{feedEntryLink arg} + <pubDate> #{formatRFC822 $ feedEntryUpdated arg} + <description>#{feedEntryContent arg} |] -- | Generates a link tag in the head of a widget. @@ -78,5 +79,5 @@ rssLink u title = addHamletHead #else [$hamlet| #endif - %link!href=@u@!type=$typeRss$!rel="alternate"!title=$title$ + <link href=@{u} type=#{S8.unpack typeRss} rel="alternate" title=#{title} |] diff --git a/yesod-newsfeed.cabal b/yesod-newsfeed.cabal index 5bfb65e3..0e6f68fb 100644 --- a/yesod-newsfeed.cabal +++ b/yesod-newsfeed.cabal @@ -16,6 +16,7 @@ library , yesod-core >= 0.7 && < 0.8 , time >= 1.1.4 && < 1.3 , hamlet >= 0.7 && < 0.8 + , bytestring >= 0.9 && < 0.10 exposed-modules: Yesod.Helpers.AtomFeed , Yesod.Helpers.RssFeed , Yesod.Helpers.Feed