@@ -1,10 +1,8 @@
11module Text.Hakyll.Page
22 ( Page,
33 fromContext,
4− addContext,
54 getBody,
6− readPage,
7− pageFromList
5+ readPage
86 ) where
97
108import qualified Data.Map as M
@@ -28,10 +26,6 @@ data Page = Page (M.Map B.ByteString B.ByteString)
2826fromContext :: (M.Map B.ByteString B.ByteString) -> Page
2927fromContext = Page
3028
31−-- | Add a key-value mapping to the Page.
32−addContext :: String -> String -> Page -> Page
33−addContext key value (Page page) = Page $ M.insert (B.pack key) (B.pack value) page
34−
3529-- | Auxiliary function to pack a pair.
3630packPair :: (String, String) -> (B.ByteString, B.ByteString)
3731packPair (a, b) = (B.pack a, B.pack b)
@@ -113,7 +107,8 @@ readPage pagePath = do
113107 -- Render file
114108 let rendered = B.pack $ (renderFunction $ takeExtension path) body
115109 seq rendered $ hClose handle
116− let page = addContext "url" url $ Page $ M.fromList $ (B.pack "body", rendered) : map packPair context
110+ let page = fromContext $ M.fromList $
111+ [(B.pack "body", rendered), packPair ("url", url)] ++ map packPair context
117112
118113 -- Cache if needed
119114 if getFromCache then return () else cachePage page
@@ -121,10 +116,6 @@ readPage pagePath = do
121116 where url = toURL pagePath
122117 cacheFile = toCache url
123118
124−-- | Create a key-value mapping page from an association list.
125−pageFromList :: [(String, String)] -> Page
126−pageFromList = Page . M.fromList . map packPair
127−
128119-- Make pages renderable.
129120instance Renderable Page where
130121 getDependencies = (:[]) . flip addExtension ".html" . dropExtension . getPageURL