@@ -0,0 +1,34 @@
3+import Text.Hakyll (hakyll)
4+import Text.Hakyll.Render (renderAndConcat, renderChain, css)
5+import Text.Hakyll.File (getRecursiveContents, directory)
6+import Text.Hakyll.Renderables (createPagePath, createCustomPage)
7+import Data.List (sort)
8+import Control.Monad (mapM_, liftM)
9+import Data.Either (Either(..))
15+ -- Find all post paths.
16+ postPaths <- liftM (reverse . sort) $ getRecursiveContents "posts"
17+ let renderablePosts = map createPagePath postPaths
19+ -- Render index, including recent posts.
20+ let recentPosts = renderAndConcat "templates/postitem.html" $ take 3 renderablePosts
21+ renderChain ["index.html", "templates/default.html"] $
22+ createCustomPage "index.html" ("templates/postitem.html" : postPaths)
23+ [("title", Left "Home"), ("posts", Right recentPosts)]
25+ -- Render all posts list.
26+ let postItems = renderAndConcat "templates/postitem.html" $ renderablePosts
27+ renderChain ["posts.html", "templates/default.html"] $
28+ createCustomPage "posts.html" ("templates/postitem.html" : postPaths)
29+ [("title", Left "All posts"), ("posts", Right postItems)]
32+ putStrLn "Generating posts..."
33+ mapM_ (renderChain ["templates/post.html", "templates/default.html"]) renderablePosts