aboutsummaryrefslogtreecommitdiff
path: root/compiler/site/Rules.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/site/Rules.hs')
-rw-r--r--compiler/site/Rules.hs54
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