diff options
| author | Carlos Sosa <gnusosa@gnusosa.net> | 2018-08-28 00:22:45 -0700 |
|---|---|---|
| committer | Carlos Sosa <gnusosa@gnusosa.net> | 2018-08-28 00:22:45 -0700 |
| commit | e48a9d406fbd5489dc25bcdd92b1df2b0c862105 (patch) | |
| tree | ac11a023e3e1f0c03514bf6d918de4270036f504 /site.hs | |
Initial commit
Diffstat (limited to 'site.hs')
| -rw-r--r-- | site.hs | 71 |
1 files changed, 71 insertions, 0 deletions
@@ -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 |
