summaryrefslogtreecommitdiff
path: root/site.hs
diff options
context:
space:
mode:
authorCarlos Sosa <gnusosa@gnusosa.net>2018-08-28 00:22:45 -0700
committerCarlos Sosa <gnusosa@gnusosa.net>2018-08-28 00:22:45 -0700
commite48a9d406fbd5489dc25bcdd92b1df2b0c862105 (patch)
treeac11a023e3e1f0c03514bf6d918de4270036f504 /site.hs
Initial commit
Diffstat (limited to 'site.hs')
-rw-r--r--site.hs71
1 files changed, 71 insertions, 0 deletions
diff --git a/site.hs b/site.hs
new file mode 100644
index 0000000..b980948
--- /dev/null
+++ b/site.hs
@@ -0,0 +1,71 @@
+--------------------------------------------------------------------------------
+{-# LANGUAGE OverloadedStrings #-}
+import Data.Monoid (mappend)
+import Hakyll
+
+
+--------------------------------------------------------------------------------
+main :: IO ()
+main = hakyll $ 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 "log/*.markdown" $ do
+ route $ setExtension "html"
+ compile $ pandocCompiler
+ >>= loadAndApplyTemplate "templates/post.html" postCtx
+ >>= relativizeUrls
+
+ create ["log/index.html"] $ do
+ route idRoute
+ compile $ do
+ posts <- recentFirst =<< loadAll "log/*.markdown"
+ let archiveCtx =
+ listField "posts" postForArchiveCtx (return posts) `mappend`
+ constField "title" "archive of log posts" `mappend`
+ defaultContext
+
+ makeItem ""
+ >>= loadAndApplyTemplate "templates/archive.html" archiveCtx
+ >>= loadAndApplyTemplate "templates/post.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
+
+postForArchiveCtx :: Context String
+postForArchiveCtx =
+ dateField "date" "%d %b %Y" `mappend`
+ defaultContext