match "css/*" compileCss
match "posts/*" compilePosts
match (fromList ["about.markdown"]) compilePages
+ create ["archive.html"] compileArchive
match "templates/*" $ compile templateCompiler
compileIndex :: Rules ()
>>= loadAndApplyTemplate "templates/default.html" defaultContext
>>= relativizeUrls
+compileArchive :: Rules ()
+compileArchive = do
+ route idRoute
+ compile $ do
+ posts <- loadAll "posts/*" >>= recentFirst
+ let archiveCtx =
+ listField "posts" postCtx (return posts) `mappend`
+ constField "title" "Archive" `mappend`
+ defaultContext
+ makeItem ""
+ >>= loadAndApplyTemplate "templates/archive.html" archiveCtx
+ >>= loadAndApplyTemplate "templates/default.html" archiveCtx
+ >>= relativizeUrls
+
postCtx :: Context String
postCtx = dateField "date" "%B %e, %Y" `mappend` defaultContext