on 6a88430 help sign in
67 lines 2.3 kB history raw
1--------------------------------------------------------------------------------
2{-# LANGUAGE OverloadedStrings #-}
3import Data.Monoid (mappend)
4import Hakyll
7--------------------------------------------------------------------------------
8main :: IO ()
9main = hakyll $ do
10 match "images/*" $ do
11 route idRoute
12 compile copyFileCompiler
14 match "css/*" $ do
15 route idRoute
16 compile compressCssCompiler
18 match (fromList ["about.rst", "contact.markdown"]) $ do
19 route $ setExtension "html"
20 compile $ pandocCompiler
21 >>= loadAndApplyTemplate "templates/default.html" defaultContext
22 >>= relativizeUrls
24 match "posts/*" $ do
25 route $ setExtension "html"
26 compile $ pandocCompiler
27 >>= loadAndApplyTemplate "templates/post.html" postCtx
28 >>= loadAndApplyTemplate "templates/default.html" postCtx
29 >>= relativizeUrls
31 create ["archive.html"] $ do
32 route idRoute
33 compile $ do
34 posts <- recentFirst =<< loadAll "posts/*"
35 let archiveCtx =
36 listField "posts" postCtx (return posts) `mappend`
37 constField "title" "Archives" `mappend`
38 defaultContext
40 makeItem ""
41 >>= loadAndApplyTemplate "templates/archive.html" archiveCtx
42 >>= loadAndApplyTemplate "templates/default.html" archiveCtx
43 >>= relativizeUrls
46 match "index.html" $ do
47 route idRoute
48 compile $ do
49 posts <- recentFirst =<< loadAll "posts/*"
50 let indexCtx =
51 listField "posts" postCtx (return posts) `mappend`
52 constField "title" "Home" `mappend`
53 defaultContext
55 getResourceBody
56 >>= applyAsTemplate indexCtx
57 >>= loadAndApplyTemplate "templates/default.html" indexCtx
58 >>= relativizeUrls
60 match "templates/*" $ compile templateBodyCompiler
63--------------------------------------------------------------------------------
64postCtx :: Context String
65postCtx =
66 dateField "date" "%B %e, %Y" `mappend`
67 defaultContext