-------------------------------------------------------------------------------- {-# LANGUAGE OverloadedStrings #-} import Data.Monoid (mappend) import Hakyll -------------------------------------------------------------------------------- main :: IO () main = hakyll $ do match "images/*" $ do route idRoute compile copyFileCompiler match "resources/*" $ do route idRoute compile copyFileCompiler match "css/*" $ do route idRoute compile compressCssCompiler match (fromList ["about.markdown", "contact.markdown"]) $ do route $ setExtension "html" compile $ pandocCompiler >>= loadAndApplyTemplate "templates/default.html" defaultContext >>= relativizeUrls -- match "posts/*" $ do -- route $ setExtension "html" -- compile $ pandocCompiler -- >>= loadAndApplyTemplate "templates/post.html" postCtx -- >>= loadAndApplyTemplate "templates/default.html" postCtx -- >>= relativizeUrls -- create ["archive.html"] $ do -- route idRoute -- compile $ do -- posts <- recentFirst =<< loadAll "posts/*" -- let archiveCtx = -- listField "posts" postCtx (return posts) `mappend` -- constField "title" "Archives" `mappend` -- defaultContext -- -- makeItem "" -- >>= loadAndApplyTemplate "templates/archive.html" archiveCtx -- >>= loadAndApplyTemplate "templates/default.html" archiveCtx -- >>= relativizeUrls match "index.html" $ do route idRoute compile $ do posts <- recentFirst =<< loadAll "posts/*" let indexCtx = listField "posts" postCtx (return posts) `mappend` constField "title" "Home" `mappend` defaultContext getResourceBody >>= applyAsTemplate indexCtx >>= loadAndApplyTemplate "templates/default.html" indexCtx >>= relativizeUrls match "templates/*" $ compile templateBodyCompiler -------------------------------------------------------------------------------- postCtx :: Context String postCtx = dateField "date" "%B %e, %Y" `mappend` defaultContext