diff options
Diffstat (limited to 'examples/simpleblog')
-rwxr-xr-x | examples/simpleblog/hack | bin | 0 -> 39309764 bytes | |||
-rw-r--r-- | examples/simpleblog/hakyll.hs | 90 | ||||
-rw-r--r-- | examples/simpleblog/templates/default.html | 12 | ||||
-rw-r--r-- | examples/simpleblog/templates/index.html (renamed from examples/simpleblog/index.html) | 4 | ||||
-rw-r--r-- | examples/simpleblog/templates/post.html | 6 | ||||
-rw-r--r-- | examples/simpleblog/templates/postitem.html | 4 | ||||
-rw-r--r-- | examples/simpleblog/templates/posts.html (renamed from examples/simpleblog/posts.html) | 2 |
7 files changed, 71 insertions, 47 deletions
diff --git a/examples/simpleblog/hack b/examples/simpleblog/hack Binary files differnew file mode 100755 index 0000000..42e295e --- /dev/null +++ b/examples/simpleblog/hack diff --git a/examples/simpleblog/hakyll.hs b/examples/simpleblog/hakyll.hs index 38472d5..db4230f 100644 --- a/examples/simpleblog/hakyll.hs +++ b/examples/simpleblog/hakyll.hs @@ -1,35 +1,59 @@ +{-# LANGUAGE OverloadedStrings #-} module Main where -import Text.Hakyll (hakyll) -import Text.Hakyll.Render -import Text.Hakyll.Context -import Text.Hakyll.File (getRecursiveContents, directory) -import Text.Hakyll.CreateContext (createPage, createCustomPage, createListing) -import Data.List (sort) -import Control.Monad (forM_, liftM) -import Control.Monad.Reader (liftIO) -import Data.Either (Either(..)) - -main = hakyll "http://example.com" $ do - -- Static directory. - directory css "css" - - -- Find all post paths. - postPaths <- liftM (reverse . sort) $ getRecursiveContents "posts" - let postPages = map createPage postPaths - - -- Render index, including recent posts. - let index = createListing "index.html" ["templates/postitem.html"] - (take 3 postPages) [("title", Left "Home")] - renderChain ["index.html", "templates/default.html"] index - - -- Render all posts list. - let posts = createListing "posts.html" ["templates/postitem.html"] - postPages [("title", Left "All posts")] - renderChain ["posts.html", "templates/default.html"] posts - - -- Render all posts. - liftIO $ putStrLn "Generating posts..." - forM_ postPages $ renderChain [ "templates/post.html" - , "templates/default.html" - ] +import Prelude hiding (id) +import Control.Category (id) +import Control.Arrow ((>>>), (***), arr) +import Data.Monoid (mempty, mconcat) + +import Hakyll + +main :: IO () +main = hakyll $ do + -- Compress CSS + route "css/*" idRoute + compile "css/*" compressCssCompiler + + -- Render posts + route "posts/*" $ setExtension ".html" + compile "posts/*" $ + pageCompiler + >>> applyTemplateCompiler "templates/post.html" + >>> applyTemplateCompiler "templates/default.html" + >>> relativizeUrlsCompiler + + -- Render posts list + route "posts.html" $ idRoute + create "posts.html" $ + constA mempty + >>> arr (setField "title" "All posts") + >>> requireAllA "posts/*" addPostList + >>> applyTemplateCompiler "templates/posts.html" + >>> applyTemplateCompiler "templates/default.html" + >>> relativizeUrlsCompiler + + -- Index + route "index.html" idRoute + create "index.html" $ + constA mempty + >>> arr (setField "title" "Home") + >>> requireAllA "posts/*" (id *** arr (take 3 . reverse . sortByBaseName) >>> addPostList) + >>> applyTemplateCompiler "templates/index.html" + >>> applyTemplateCompiler "templates/default.html" + >>> relativizeUrlsCompiler + + -- Read templates + compile "templates/*" templateCompiler + + -- End + return () + +-- | Auxiliary compiler: generate a post list from a list of given posts, and +-- add it to the current page under @$posts@ +-- +addPostList :: Compiler (Page String, [Page String]) (Page String) +addPostList = setFieldA "posts" $ + arr (reverse . sortByBaseName) + >>> require "templates/postitem.html" (\p t -> map (applyTemplate t) p) + >>> arr mconcat + >>> arr pageBody diff --git a/examples/simpleblog/templates/default.html b/examples/simpleblog/templates/default.html index c411976..01ed20e 100644 --- a/examples/simpleblog/templates/default.html +++ b/examples/simpleblog/templates/default.html @@ -4,16 +4,16 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title>SimpleBlog - $title</title> - <link rel="stylesheet" type="text/css" href="$root/css/default.css" /> + <title>SimpleBlog - $title$</title> + <link rel="stylesheet" type="text/css" href="/css/default.css" /> </head> <body> - <h1>SimpleBlog - $title</h1> + <h1>SimpleBlog - $title$</h1> <div id="navigation"> - <a href="$root/index.html">Home</a> - <a href="$root/posts.html">All posts</a> + <a href="/index.html">Home</a> + <a href="/posts.html">All posts</a> </div> - $body + $body$ </body> </html> diff --git a/examples/simpleblog/index.html b/examples/simpleblog/templates/index.html index 88cc0a2..4978949 100644 --- a/examples/simpleblog/index.html +++ b/examples/simpleblog/templates/index.html @@ -1,9 +1,9 @@ <div id="posts"> <h1>Recent posts</h1> <ul> - $body + $posts$ </ul> - <a href="$root/posts.html">All posts...</a> + <a href="/posts.html">All posts...</a> </div> <div class="about"> diff --git a/examples/simpleblog/templates/post.html b/examples/simpleblog/templates/post.html index 46797a4..e2864ba 100644 --- a/examples/simpleblog/templates/post.html +++ b/examples/simpleblog/templates/post.html @@ -1,4 +1,4 @@ -<h1>$title</h1> -by <em>$author</em> on <strong>$date</strong> +<h1>$title$</h1> +by <em>$author$</em> on <strong>$date$</strong> -$body +$body$ diff --git a/examples/simpleblog/templates/postitem.html b/examples/simpleblog/templates/postitem.html index 0e62418..19c954b 100644 --- a/examples/simpleblog/templates/postitem.html +++ b/examples/simpleblog/templates/postitem.html @@ -1,4 +1,4 @@ <li> - <a href="$root/$url">$title</a> - - <em>$date</em> - by <em>$author</em> + <a href="/$url$">$title$</a> + - <em>$date$</em> - by <em>$author$</em> </li> diff --git a/examples/simpleblog/posts.html b/examples/simpleblog/templates/posts.html index 7db1a59..2bec161 100644 --- a/examples/simpleblog/posts.html +++ b/examples/simpleblog/templates/posts.html @@ -1,4 +1,4 @@ <h1>All posts</h1> <ul> - $body + $posts$ </ul> |