Hamlet 0.7 fixes

This commit is contained in:
Michael Snoyman 2011-02-03 22:10:57 +02:00
parent f4817dcfd8
commit b246471efb
3 changed files with 37 additions and 33 deletions

View File

@ -26,6 +26,8 @@ import Yesod.Content
import Yesod.Handler import Yesod.Handler
import Yesod.Widget import Yesod.Widget
import Yesod.Helpers.Feed import Yesod.Helpers.Feed
import Text.Hamlet (Hamlet, xhamlet, hamlet, cdata)
import qualified Data.ByteString.Char8 as S8
newtype RepAtom = RepAtom Content newtype RepAtom = RepAtom Content
instance HasReps RepAtom where instance HasReps RepAtom where
@ -42,14 +44,14 @@ template arg =
[$xhamlet| [$xhamlet|
#endif #endif
\<?xml version="1.0" encoding="utf-8"?> \<?xml version="1.0" encoding="utf-8"?>
%feed!xmlns="http://www.w3.org/2005/Atom" <feed xmlns="http://www.w3.org/2005/Atom"
%title $feedTitle.arg$ <title>#{feedTitle arg}
%link!rel=self!href=@feedLinkSelf.arg@ <link rel=self href=@{feedLinkSelf arg}
%link!href=@feedLinkHome.arg@ <link href=@{feedLinkHome arg}
%updated $formatW3.feedUpdated.arg$ <updated>#{formatW3 $ feedUpdated arg}
%id @feedLinkHome.arg@ <id>@{feedLinkHome arg}
$forall feedEntries.arg entry $forall entry <- feedEntries arg
^entryTemplate.entry^ ^{entryTemplate entry}
|] |]
entryTemplate :: FeedEntry url -> Hamlet url entryTemplate :: FeedEntry url -> Hamlet url
@ -59,12 +61,12 @@ entryTemplate arg =
#else #else
[$xhamlet| [$xhamlet|
#endif #endif
%entry <entry
%id @feedEntryLink.arg@ <id>@{feedEntryLink arg}
%link!href=@feedEntryLink.arg@ <link href=@{feedEntryLink arg}
%updated $formatW3.feedEntryUpdated.arg$ <updated>#{formatW3 $ feedEntryUpdated arg}
%title $feedEntryTitle.arg$ <title>#{feedEntryTitle arg}
%content!type=html $cdata.feedEntryContent.arg$ <content type=html>#{cdata $ feedEntryContent arg}
|] |]
-- | Generates a link tag in the head of a widget. -- | Generates a link tag in the head of a widget.
@ -77,5 +79,5 @@ atomLink u title = addHamletHead
#else #else
[$hamlet| [$hamlet|
#endif #endif
%link!href=@u@!type=$typeAtom$!rel="alternate"!title=$title$ <link href=@{u} type=#{S8.unpack typeAtom} rel="alternate" title=#{title}
|] |]

View File

@ -22,6 +22,8 @@ import Yesod.Handler
import Yesod.Content import Yesod.Content
import Yesod.Widget import Yesod.Widget
import Yesod.Helpers.Feed import Yesod.Helpers.Feed
import Text.Hamlet (Hamlet, xhamlet, hamlet)
import qualified Data.ByteString.Char8 as S8
newtype RepRss = RepRss Content newtype RepRss = RepRss Content
instance HasReps RepRss where instance HasReps RepRss where
@ -39,18 +41,17 @@ template arg =
[$xhamlet| [$xhamlet|
#endif #endif
\<?xml version="1.0" encoding="utf-8"?> \<?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 $forall entry <- feedEntries arg
%atom:link!href=@feedLinkSelf.arg@!rel="self"!type=$typeRss$ ^{entryTemplate entry}
%title $feedTitle.arg$
%link @feedLinkHome.arg@
%description $feedDescription.arg$
%lastBuildDate $formatRFC822.feedUpdated.arg$
%language $feedLanguage.arg$
$forall feedEntries.arg entry
^entryTemplate.entry^
|] |]
entryTemplate :: FeedEntry url -> Hamlet url entryTemplate :: FeedEntry url -> Hamlet url
@ -60,12 +61,12 @@ entryTemplate arg =
#else #else
[$xhamlet| [$xhamlet|
#endif #endif
%item <item
%title $feedEntryTitle.arg$ <title> #{feedEntryTitle arg}
%link @feedEntryLink.arg@ <link> @{feedEntryLink arg}
%guid @feedEntryLink.arg@ <guid> @{feedEntryLink arg}
%pubDate $formatRFC822.feedEntryUpdated.arg$ <pubDate> #{formatRFC822 $ feedEntryUpdated arg}
%description $feedEntryContent.arg$ <description>#{feedEntryContent arg}
|] |]
-- | Generates a link tag in the head of a widget. -- | Generates a link tag in the head of a widget.
@ -78,5 +79,5 @@ rssLink u title = addHamletHead
#else #else
[$hamlet| [$hamlet|
#endif #endif
%link!href=@u@!type=$typeRss$!rel="alternate"!title=$title$ <link href=@{u} type=#{S8.unpack typeRss} rel="alternate" title=#{title}
|] |]

View File

@ -16,6 +16,7 @@ library
, yesod-core >= 0.7 && < 0.8 , yesod-core >= 0.7 && < 0.8
, time >= 1.1.4 && < 1.3 , time >= 1.1.4 && < 1.3
, hamlet >= 0.7 && < 0.8 , hamlet >= 0.7 && < 0.8
, bytestring >= 0.9 && < 0.10
exposed-modules: Yesod.Helpers.AtomFeed exposed-modules: Yesod.Helpers.AtomFeed
, Yesod.Helpers.RssFeed , Yesod.Helpers.RssFeed
, Yesod.Helpers.Feed , Yesod.Helpers.Feed