{-# LANGUAGE OverloadedStrings #-} import Data.Monoid (mappend) import Hakyll main :: IO () main = hakyllWith configuration $ do match "design/*.hs" $ do route $ setExtension "css" compile $ getResourceString >>= withItemBody (unixFilter "runghc" []) match "recipes/*" $ do route $ setExtension "html" compile $ pandocCompiler >>= loadAndApplyTemplate "templates/main.html" defaultContext >>= relativizeUrls match "index.html" $ do route idRoute let context = listField "recipes" defaultContext (loadAll "recipes/*") `mappend` defaultContext compile $ getResourceBody >>= applyAsTemplate context >>= loadAndApplyTemplate "templates/main.html" context >>= relativizeUrls match "templates/*" $ compile templateBodyCompiler configuration :: Configuration configuration = defaultConfiguration { destinationDirectory = "public" , inMemoryCache = True }