diff options
Diffstat (limited to 'compiler/site/Rules.hs')
-rw-r--r-- | compiler/site/Rules.hs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/compiler/site/Rules.hs b/compiler/site/Rules.hs new file mode 100644 index 0000000..0cbf772 --- /dev/null +++ b/compiler/site/Rules.hs @@ -0,0 +1,54 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Rules + ( rules + ) where + +import Hakyll + +postCtx :: Context String +postCtx = dateField "date" "%B %e, %Y" <> defaultContext + +rules :: Rules () +rules = do + match "images/*" $ do + route idRoute + compile copyFileCompiler + match "css/*" $ do + route idRoute + compile compressCssCompiler + match (fromList ["about.rst", "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) <> + constField "title" "Archives" <> + 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) <> + constField "title" "Home" <> + defaultContext + getResourceBody >>= applyAsTemplate indexCtx >>= + loadAndApplyTemplate "templates/default.html" indexCtx >>= + relativizeUrls + match "templates/*" $ compile templateBodyCompiler |