diff options
author | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2011-06-13 08:43:28 +0200 |
---|---|---|
committer | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2011-06-13 08:43:28 +0200 |
commit | edeef66180f24e4254b512041bee617368fa1eba (patch) | |
tree | df2b6c470dba9fda52a0d3b96fd569d2c74b2c48 /examples | |
parent | 893b366435739d073d2b6b9cafae868b5d361354 (diff) | |
download | hakyll-edeef66180f24e4254b512041bee617368fa1eba.tar.gz |
Remove examples from this repo
Diffstat (limited to 'examples')
76 files changed, 0 insertions, 1954 deletions
diff --git a/examples/README.markdown b/examples/README.markdown deleted file mode 100644 index e253e9d..0000000 --- a/examples/README.markdown +++ /dev/null @@ -1,14 +0,0 @@ -Hakyll examples -=============== - -In order of increasing complexity: - - brochure/ A very simple brochure site - morepages/ Slightly more complicated brochure site with partials - simpleblog/ A simple blog - feedblog/ Adds an RSS feed to the simple blog - tagblog/ Adds tags to the simple blog - -In no real category: - - hakyll/ The hakyll website (some custom pandoc options) diff --git a/examples/brochure/about.rst b/examples/brochure/about.rst deleted file mode 100644 index 99af9e2..0000000 --- a/examples/brochure/about.rst +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: About ---- -Nullam imperdiet sodales orci vitae molestie. Nunc quam orci, pharetra a -rhoncus vitae, eleifend id felis. Suspendisse potenti. Etiam vitae urna orci. -Quisque pellentesque dignissim felis, egestas tempus urna luctus vitae. In hac -habitasse platea dictumst. Morbi fringilla mattis odio, et mattis tellus -accumsan vitae. - -1. Amamus Unicode 碁 -2. Interdum nex magna. - -Vivamus eget mauris sit amet nulla laoreet lobortis. Nulla in diam elementum -risus convallis commodo. Cras vehicula varius dui vitae facilisis. Proin -elementum libero eget leo aliquet quis euismod orci vestibulum. Duis rhoncus -lorem consequat tellus vestibulum aliquam. Quisque orci orci, malesuada porta -blandit et, interdum nec magna. diff --git a/examples/brochure/code.lhs b/examples/brochure/code.lhs deleted file mode 100644 index e98ec85..0000000 --- a/examples/brochure/code.lhs +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Code ---- -Etiam condimentum auctor semper. Donec lobortis, magna id sodales sollicitudin, -lectus mi egestas nulla, pulvinar lobortis nunc eros id nisl. Curabitur -imperdiet, erat at accumsan vulputate. - -> reverse' [] = [] -> reverse' (x:xs) = (reverse' xs) ++ [x] - -Purus nunc blandit nulla, dictum. - -vestibulum sem lorem eget ipsum. Nunc tincidunt, turpis ut fermentum dapibus, -justo tortor bibendum sem, at facilisis justo odio luctus lectus. Quisque nec -ligula ipsum. Nunc augue lacus, ullamcorper vel dapibus in, mattis eget elit. - -> main = print $ reverse' [1 .. 10] - -Integer ut dui eu felis mollis vestibulum. Etiam at nibh id diam aliquet -vestibulum sit amet a nibh. Aliquam erat volutpat. Etiam vitae nulla at dolor -fringilla tempor ut a nunc. Pellentesque elementum elit lorem. diff --git a/examples/brochure/css/default.css b/examples/brochure/css/default.css deleted file mode 100644 index 3bfeeaf..0000000 --- a/examples/brochure/css/default.css +++ /dev/null @@ -1,27 +0,0 @@ -body { - width: 600px; - margin: 0px auto 0px auto; -} - -div#navigation { - text-align: center; - border-bottom: 4px solid black; -} - -div#navigation a { - color: white; - text-decoration: none; - background-color: black; - padding: 3px 10px 3px 10px; - margin: 0px 10px 0px 10px; -} - -div.figure { - float: right; - margin: 20px 0px 20px 20px; -} - -div.figure p.caption { - text-align: center; - font-style: italic; -} diff --git a/examples/brochure/css/syntax.css b/examples/brochure/css/syntax.css deleted file mode 100644 index 1aed859..0000000 --- a/examples/brochure/css/syntax.css +++ /dev/null @@ -1,18 +0,0 @@ -/* Generated by pandoc. */ -table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode, table.sourceCode pre - { margin: 0; padding: 0; border: 0; vertical-align: baseline; border: none; } -td.lineNumbers { border-right: 1px solid #AAAAAA; text-align: right; color: #AAAAAA; padding-right: 5px; padding-left: 5px; } -td.sourceCode { padding-left: 5px; } -pre.sourceCode span.kw { color: #007020; font-weight: bold; } -pre.sourceCode span.dt { color: #902000; } -pre.sourceCode span.dv { color: #40a070; } -pre.sourceCode span.bn { color: #40a070; } -pre.sourceCode span.fl { color: #40a070; } -pre.sourceCode span.ch { color: #4070a0; } -pre.sourceCode span.st { color: #4070a0; } -pre.sourceCode span.co { color: #60a0b0; font-style: italic; } -pre.sourceCode span.ot { color: #007020; } -pre.sourceCode span.al { color: red; font-weight: bold; } -pre.sourceCode span.fu { color: #06287e; } -pre.sourceCode span.re { } -pre.sourceCode span.er { color: red; font-weight: bold; } diff --git a/examples/brochure/hakyll.hs b/examples/brochure/hakyll.hs deleted file mode 100644 index f33b37d..0000000 --- a/examples/brochure/hakyll.hs +++ /dev/null @@ -1,22 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -import Control.Arrow ((>>>)) - -import Hakyll - -main :: IO () -main = hakyll $ do - match "images/*" $ do - route idRoute - compile copyFileCompiler - - match "css/*" $ do - route idRoute - compile compressCssCompiler - - match "templates/*" $ compile templateCompiler - - match (list ["about.rst", "index.markdown", "code.lhs"]) $ do - route $ setExtension "html" - compile $ pageCompiler - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler diff --git a/examples/brochure/index.markdown b/examples/brochure/index.markdown deleted file mode 100644 index 96b63bd..0000000 --- a/examples/brochure/index.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Home ---- -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce tempor, urna et -auctor tincidunt, eros mauris facilisis purus, eget sollicitudin leo massa sit -amet ipsum. Vivamus eu massa in urna vehicula rutrum eget sit amet purus. - -![Haskell logo](/images/haskell-logo.png) - -- Mauris sit amet justo mi. -- Curabitur vel quam felis. -- In hac habitasse platea dictumst. - -Etiam nec consequat risus. Donec consequat est vitae neque fermentum -feugiat nec ac nibh. Nulla rhoncus, odio quis scelerisque rutrum, metus sem -tempor ante, a ornare ipsum felis sed ligula. Morbi urna lectus, scelerisque -non pharetra in, rutrum quis ligula. Phasellus semper ullamcorper arcu eu -auctor. - -Aliquam sagittis tincidunt libero ut elementum. Ut sit amet vestibulum metus. -Ut aliquet congue neque eu tincidunt. Integer eu elit sed massa sollicitudin -vehicula nec ut sem. Cras euismod enim eget purus lacinia non feugiat urna -imperdiet. Aliquam justo sem, viverra eu vehicula vitae, imperdiet vel magna. - -Pellentesque enim dui, interdum elementum vehicula luctus, feugiat vitae arcu. -Vestibulum ut felis justo. Quisque vestibulum mauris eget ipsum luctus -consequat. diff --git a/examples/brochure/templates/default.html b/examples/brochure/templates/default.html deleted file mode 100644 index 44d1cd0..0000000 --- a/examples/brochure/templates/default.html +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<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>MyAweSomeCompany - $title$</title> - <link rel="stylesheet" type="text/css" href="/css/default.css" /> - <link rel="stylesheet" type="text/css" href="/css/syntax.css" /> - </head> - <body> - <h1>MyAweSomeCompany - $title$</h1> - <div id="navigation"> - <a href="/">Home</a> - <a href="/about.html">About</a> - <a href="/code.html">Code</a> - </div> - - $body$ - </body> -</html> diff --git a/examples/feedblog/css/default.css b/examples/feedblog/css/default.css deleted file mode 100644 index 9ed2b01..0000000 --- a/examples/feedblog/css/default.css +++ /dev/null @@ -1,17 +0,0 @@ -body { - width: 600px; - margin: 0px auto 0px auto; -} - -div#navigation { - text-align: center; - border-bottom: 4px solid black; -} - -div#navigation a { - color: white; - text-decoration: none; - background-color: black; - padding: 3px 10px 3px 10px; - margin: 0px 10px 0px 10px; -} diff --git a/examples/feedblog/hakyll.hs b/examples/feedblog/hakyll.hs deleted file mode 100644 index 4aa8ed9..0000000 --- a/examples/feedblog/hakyll.hs +++ /dev/null @@ -1,68 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -module Main where - -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 - match "css/*" $ do - route idRoute - compile compressCssCompiler - - -- Render posts - match "posts/*" $ do - route $ setExtension ".html" - compile $ pageCompiler - >>> applyTemplateCompiler "templates/post.html" - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler - - -- Render posts list - match "posts.html" $ route idRoute - create "posts.html" $ constA mempty - >>> arr (setField "title" "All posts") - >>> requireAllA "posts/*" addPostList - >>> applyTemplateCompiler "templates/posts.html" - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler - - -- Index - match "index.html" $ route 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 - - -- Render RSS feed - match "rss.xml" $ route idRoute - create "rss.xml" $ - requireAll_ "posts/*" >>> renderRss feedConfiguration - - -- Read templates - match "templates/*" $ compile templateCompiler - --- | 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 - -feedConfiguration :: FeedConfiguration -feedConfiguration = FeedConfiguration - { feedTitle = "SimpleBlog RSS feed." - , feedDescription = "A simple demo of an RSS feed created with Hakyll." - , feedAuthorName = "Jasper Van der Jeugt" - , feedRoot = "http://example.com" - } diff --git a/examples/feedblog/posts/2009-11-05-a-first-post.markdown b/examples/feedblog/posts/2009-11-05-a-first-post.markdown deleted file mode 100644 index 7351eb4..0000000 --- a/examples/feedblog/posts/2009-11-05-a-first-post.markdown +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: A first post -author: Julius Caesar -date: November 5, 2009 -description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. ---- - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus pretium leo -adipiscing lectus iaculis lobortis. Vivamus scelerisque velit dignissim metus -gravida sit amet dapibus ligula tempor. Quisque sit amet viverra nunc. -Suspendisse cursus elementum ante, ut venenatis nisi dictum eu. Nulla diam -ligula, eleifend in varius quis, malesuada a nibh. Vivamus consequat -pellentesque erat non blandit. Nunc sit amet eros vel massa semper ullamcorper -quis iaculis magna. Vestibulum ullamcorper urna sit amet est elementum -pulvinar. Vestibulum consequat lacus ac quam hendrerit tincidunt. Praesent -bibendum vehicula diam, nec sagittis risus tempus a. Nulla quis odio sit amet -odio vehicula cursus ut id odio. Curabitur semper magna euismod magna mollis -venenatis. Nunc eget eleifend velit. Mauris sed posuere sem. Fusce id nunc -nisi, a aliquam orci. Suspendisse laoreet justo non enim laoreet eget consequat -velit porttitor. Aenean faucibus sodales metus at tincidunt. Donec vestibulum -leo pulvinar erat auctor ac ultrices massa euismod. Phasellus blandit cursus -magna, eget lacinia mi lobortis sed. Suspendisse ultricies enim ligula, vel -scelerisque mauris. diff --git a/examples/feedblog/posts/2009-11-10-another-post.markdown b/examples/feedblog/posts/2009-11-10-another-post.markdown deleted file mode 100644 index c4e07b6..0000000 --- a/examples/feedblog/posts/2009-11-10-another-post.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Another post -author: Marcus Tullius Cicero -date: November 10, 2009 -description: Vestibulum in ultrices urna. Etiam tempor enim dui, nec malesuada elit. ---- - -Vestibulum in ultrices urna. Etiam tempor enim dui, nec malesuada elit. Donec -tempor ligula et quam volutpat quis fermentum eros congue. Sed ut pulvinar sem. -Sed aliquam ipsum id purus sollicitudin vulputate. Cras et mauris dui, vel -hendrerit leo. Ut metus ipsum, fermentum ac malesuada id, tempus pharetra quam. -Donec diam felis, consequat ac scelerisque cursus, gravida non lectus. Sed -faucibus elit dapibus diam elementum id varius nisi tristique. Proin consequat -faucibus neque in aliquam. Vestibulum ligula odio, pulvinar vel hendrerit -vitae, egestas ut nibh. Praesent ut velit elit, in consequat dolor. Praesent -sem enim, commodo in gravida sed, adipiscing vel eros. Lorem ipsum dolor sit -amet, consectetur adipiscing elit. Proin non aliquam nunc. diff --git a/examples/feedblog/posts/2009-11-28-a-third-post.markdown b/examples/feedblog/posts/2009-11-28-a-third-post.markdown deleted file mode 100644 index b7df45d..0000000 --- a/examples/feedblog/posts/2009-11-28-a-third-post.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: A third post -author: Publius Ovidius Naso -date: November 28, 2009 -description: Pellentesque tempor blandit elit, vel ultricies arcu congue egestas. ---- - -Pellentesque tempor blandit elit, vel ultricies arcu congue egestas. Fusce -vitae rutrum nisl. Fusce id mauris libero, a venenatis tellus. Fusce iaculis, -lorem et ornare molestie, mauris risus mollis nisi, non fermentum lacus lacus -sit amet ipsum. Praesent lobortis ullamcorper dolor, eget convallis ligula -dignissim a. Suspendisse nulla nisi, congue et pharetra vel, convallis non -libero. Ut a nulla ipsum. Phasellus cursus velit id neque viverra ut -pellentesque justo posuere. Curabitur laoreet enim et velit tempor consectetur. -Donec eu pretium urna. Suspendisse vitae nisi at metus vestibulum aliquam in -sit amet nisl. Donec convallis lacinia odio, vestibulum molestie nunc feugiat -a. Suspendisse vehicula, sapien id aliquet consectetur, sem sapien ullamcorper -arcu, scelerisque porttitor elit ipsum posuere ligula. Nulla at velit eu metus -tincidunt auctor ut sit amet enim. Donec placerat dapibus nisi id facilisis. -Maecenas pellentesque pulvinar auctor. Curabitur gravida quam sit amet purus -consectetur blandit. diff --git a/examples/feedblog/posts/2009-12-04-this-blog-aint-dead.markdown b/examples/feedblog/posts/2009-12-04-this-blog-aint-dead.markdown deleted file mode 100644 index 17de991..0000000 --- a/examples/feedblog/posts/2009-12-04-this-blog-aint-dead.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: This blog ain't dead -author: Marcus Antonius -date: December 4, 2009 -description: Etiam non felis aliquet tellus dictum vestibulum. ---- - -Etiam non felis aliquet tellus dictum vestibulum. Aliquam accumsan mauris non -lacus ultricies nec lacinia enim rhoncus. Curabitur vel tortor massa, elementum -tincidunt elit. Maecenas venenatis luctus arcu ut ullamcorper. Donec interdum -dolor eu enim tristique vel vehicula risus mollis. Nunc nec tortor quam. Nulla -a mauris arcu. Phasellus venenatis tortor vel odio tincidunt consequat. Integer -venenatis nibh vitae lectus laoreet eu feugiat nunc pretium. Integer nec turpis -metus, in fermentum lorem. diff --git a/examples/feedblog/posts/2009-12-23-almost-christmas.markdown b/examples/feedblog/posts/2009-12-23-almost-christmas.markdown deleted file mode 100644 index 214f147..0000000 --- a/examples/feedblog/posts/2009-12-23-almost-christmas.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Almost Christmas! -author: Publius Vergilius Maro -date: December 23, 2009 -description: Morbi tincidunt eleifend ante, eu gravida ante rutrum vel. ---- - -Morbi tincidunt eleifend ante, eu gravida ante rutrum vel. Nunc bibendum nulla -tellus, eget egestas sapien. Nam rhoncus interdum libero, eget congue orci -imperdiet eu. Quisque pellentesque fringilla urna, ac venenatis ante ultricies -et. Pellentesque habitant morbi tristique senectus et netus et malesuada fames -ac turpis egestas. Mauris eleifend sagittis ultrices. Quisque ultrices accumsan -nisl, sed pellentesque metus porta vitae. Nulla facilisi. In et nibh tincidunt -mi volutpat pellentesque vitae nec sapien. Integer massa ipsum, pellentesque in -elementum at, cursus sit amet diam. diff --git a/examples/feedblog/templates/default.html b/examples/feedblog/templates/default.html deleted file mode 100644 index 7aac5d5..0000000 --- a/examples/feedblog/templates/default.html +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<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="/css/default.css" /> - <link rel="alternate" - type="application/rss+xml" - title="SimpleBlog" - href="/rss.xml" /> - </head> - <body> - <h1>SimpleBlog - $title$</h1> - <div id="navigation"> - <a href="/">Home</a> - <a href="/posts.html">All posts</a> - </div> - - $body$ - </body> -</html> diff --git a/examples/feedblog/templates/index.html b/examples/feedblog/templates/index.html deleted file mode 100644 index f20adb1..0000000 --- a/examples/feedblog/templates/index.html +++ /dev/null @@ -1,14 +0,0 @@ -<div id="posts"> - <h1>Recent posts</h1> - <ul> - $posts$ - </ul> - <p><a href="/posts.html">All posts…</a></p> -</div> - -<div class="about"> - <h1>About</h1> - <p> - This is a sample blog for educational purposes. - </p> -</div> diff --git a/examples/feedblog/templates/post.html b/examples/feedblog/templates/post.html deleted file mode 100644 index dd0db95..0000000 --- a/examples/feedblog/templates/post.html +++ /dev/null @@ -1,5 +0,0 @@ -<h1>$title$</h1> - -<p>by <em>$author$</em> on <strong>$date$</strong></p> - -$body$ diff --git a/examples/feedblog/templates/postitem.html b/examples/feedblog/templates/postitem.html deleted file mode 100644 index ccbb58e..0000000 --- a/examples/feedblog/templates/postitem.html +++ /dev/null @@ -1,4 +0,0 @@ -<li> - <a href="$url$">$title$</a> - - <em>$date$</em> - by <em>$author$</em> -</li> diff --git a/examples/feedblog/templates/posts.html b/examples/feedblog/templates/posts.html deleted file mode 100644 index 2bec161..0000000 --- a/examples/feedblog/templates/posts.html +++ /dev/null @@ -1,4 +0,0 @@ -<h1>All posts</h1> -<ul> - $posts$ -</ul> diff --git a/examples/hakyll/about.markdown b/examples/hakyll/about.markdown deleted file mode 100644 index 108663b..0000000 --- a/examples/hakyll/about.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: About ---- - -## Code - -The code for Hakyll is freely available on -[github](http://github.com/jaspervdj/Hakyll/). Patches and suggestions are -always very welcome. - -## Inspiration - -Hakyll is not the only static site generator out there. It was inspired by the -following awesome projects: - -- [yst](http://github.com/jgm/yst) -- [nanoc](http://nanoc.stoneship.org/) -- [Jekyll](http://jekyllrb.com/) - -## License - -Hakyll is available under a BSD license. Note, however, that pandoc is -released under a GPL license. Since you'll probably use Hakyll with pandoc, -you will have to license your code under a GPL-compatible license. - -## Authors - -Hakyll was originally written by [Jasper Van der Jeugt](http://jaspervdj.be), -who still maintains the package. Contributors: - -- [seschwar](http://github.com/seschwar) -- [JD Marble](http://github.com/jdmarble) -- [sargon](http://github.com/sargon) -- [Paolo Veronelli](http://github.com/paolino) -- [Benedict Eastaugh](http://extralogical.net/) -- [Nicolas Wu](http://zenzike.com/) diff --git a/examples/hakyll/changelog.markdown b/examples/hakyll/changelog.markdown deleted file mode 100644 index 9c6c2cf..0000000 --- a/examples/hakyll/changelog.markdown +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Changelog ---- - -## Hakyll 3.1.1 - -- Allow `group` in rules DSL - -## Hakyll 3.1 - -- New `match` function in rules DSL -- More expressive `Pattern`s - -## Hakyll 3 - -- Complete rewrite - -## Hakyll 2.4.1 - -- Add a number of utility functions -- Fix bug in `enableIndexUrl` mode - -## Hakyll 2.4 - -- Arrow based interface to pandoc -- Easier custom fields - -## Hakyll 2.3 - -- Ability to choose between preview modes. -- Simple static configuration available. -- Support hamlet templates. - -## Hakyll 2.2.2 - -- Cabal dependency fixes. - -## Hakyll 2.2.1 - -- Allow custom time locale for `renderDate`. -- Render RSS feeds with `CDATA` sections. - -## Hakyll 2.2 - -- Allow markup languages in templates. - -## Hakyll 2.1.1 - -- Fix issues in autocompilation/preview mode. - -## Hakyll 2.1 - -May 21, 2010 - -- Expose pandoc options to HakyllConfiguration. -- Allow dashes in pages. -- Some typo's and bugs fixed. - -## Hakyll 2.0 - -March 31, 2010 - -- Rewrite of the API to a clean, Arrow based API. -- Added built-in support for RSS and Atom. -- Added more documentation. -- Added pagination. -- Many bugfixes. - -## Hakyll 1.4 - -February 17, 2010 - -- Added an autocompilation feature. -- Support for index URL's (`enableIndexUrl`). - -## Hakyll 1.3 - -January 30, 2010 - -- Added categories in addition to tags. -- Added `createListing` and `createListingWith` function for a more high-level - way to create listings. - -## Hakyll 1.2 - -January 27, 2010 - -- `Data.Binary` is now used for serialization. -- Rewrite of the caching system. -- Specialized data structure for templates. -- Caching of pages and templates. - -## Hakyll 1.1 - -January 19, 2010 - -- Switched to a custom `Hakyll` monad stack instead of the `IO` monad. -- Page sections. -- Combining renderables. -- `renderAndConcat` can now use multiple templates. - -## Hakyll 1.0 - -January 14, 2009 - -- First stable release. -- Custom templating system. -- Added `$root` key for relative URL's. - -## Hakyll 0.4 - -January 8, 2010 - -- Added examples. -- Added `ContextManipulation` type. - -## Hakyll 0.3 - -December 28, 2009 - -- Added a general `directory` function. -- Added CSS compression. -- Added tag support. -- Added a simple HTTP server for testing purposes. - -## Hakyll 0.2 - -December 16, 2010 - -- Abstracted `Renderable` type. -- Added simple caching and dependency checking. - -## Hakyll 0.1 - -December 5, 2009 - -- Initial release. diff --git a/examples/hakyll/css/default.css b/examples/hakyll/css/default.css deleted file mode 100644 index 06f664c..0000000 --- a/examples/hakyll/css/default.css +++ /dev/null @@ -1,118 +0,0 @@ -html { - padding: 0px; - margin: 0px; - background-color: white; - color: black; - font-family: sans-serif; - line-height: 160%; -} - -body { - padding: 0px 0px 60px 0px; - margin: 0px; -} - -div#header { - height: 32px; - padding: 20px 0px 20px 60px; -} - -div#header img { - display: inline; - vertical-align: middle; -} - -div#header h1 { - padding-left: 10px; - display: inline; - text-transform: uppercase; - vertical-align: middle; -} - -div#main { - margin: 0px auto 0px auto; - width: 860px; -} - -div#sidebar { - margin-right: 30px; - width: 160px; - float: left; - text-align: right; -} - -div#sidebar a { - display: block; - font-size: 110%; - text-decoration: none; - margin-bottom: 10px; - text-transform: uppercase; -} - -div#content { - width: 670px; - float: right; -} - -div#footer { - padding-top: 30px; - clear: both; - font-size: 90%; - text-align: center; -} - -a { - color: black; -} - -h2 { - font-size: 120%; - text-transform: uppercase; -} - -h3 { - font-size: 100%; - text-transform: uppercase; -} - -h1 a, h2 a, h3 a { - text-decoration: none; -} - -div.column { - width: 50%; - float: left; -} - -div.column p { - padding-right: 15px; -} - -img { - display: block; - margin: 10px auto 10px auto; - border: none; -} - -ul { - list-style-type: square; - padding-left: 1em; - margin-left: 1em; -} - -code { - background-color: rgb(250, 250, 250); - border: 1px solid rgb(200, 200, 200); - padding-left: 4px; - padding-right: 4px; -} - -pre code { - display: block; - padding: 8px; - margin-bottom: 2em; -} - -p.caption { - display: none; -} diff --git a/examples/hakyll/css/syntax.css b/examples/hakyll/css/syntax.css deleted file mode 100644 index 1aed859..0000000 --- a/examples/hakyll/css/syntax.css +++ /dev/null @@ -1,18 +0,0 @@ -/* Generated by pandoc. */ -table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode, table.sourceCode pre - { margin: 0; padding: 0; border: 0; vertical-align: baseline; border: none; } -td.lineNumbers { border-right: 1px solid #AAAAAA; text-align: right; color: #AAAAAA; padding-right: 5px; padding-left: 5px; } -td.sourceCode { padding-left: 5px; } -pre.sourceCode span.kw { color: #007020; font-weight: bold; } -pre.sourceCode span.dt { color: #902000; } -pre.sourceCode span.dv { color: #40a070; } -pre.sourceCode span.bn { color: #40a070; } -pre.sourceCode span.fl { color: #40a070; } -pre.sourceCode span.ch { color: #4070a0; } -pre.sourceCode span.st { color: #4070a0; } -pre.sourceCode span.co { color: #60a0b0; font-style: italic; } -pre.sourceCode span.ot { color: #007020; } -pre.sourceCode span.al { color: red; font-weight: bold; } -pre.sourceCode span.fu { color: #06287e; } -pre.sourceCode span.re { } -pre.sourceCode span.er { color: red; font-weight: bold; } diff --git a/examples/hakyll/examples.markdown b/examples/hakyll/examples.markdown deleted file mode 100644 index 453a22e..0000000 --- a/examples/hakyll/examples.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Examples ---- - -## Simple examples - -A number of simple examples are available in the GitHub repository. They can be -found [here](https://github.com/jaspervdj/hakyll/tree/master/examples). The -README located in that directory explains which example does what. - -## People using Hakyll - -A lot of sites running Hakyll also publish the source code. This is a very -interesting resource to learn from as well. If you're using Hakyll for your -site, and the source code is available, please notify me so I can add you to -this list. This list has no particular ordering. - -- <http://jaspervdj.be/>, - [source](https://github.com/jaspervdj/jaspervdj) -- <http://ethanschoonover.com/>, - [source](https://github.com/altercation/ethanschoonover.com) -- <http://extralogical.net/>, - [source](https://github.com/beastaugh/extralogical.net) -- <http://blog.demotera.com/>, - [source](https://bitbucket.org/paul_r/blog-de-demotera) -- <http://projects.haskell.org/diagrams/>, - [source](http://patch-tag.com/r/byorgey/diagrams-doc/snapshot/current/content/pretty/web/) diff --git a/examples/hakyll/examples/brochure.zip b/examples/hakyll/examples/brochure.zip Binary files differdeleted file mode 100644 index cfbe052..0000000 --- a/examples/hakyll/examples/brochure.zip +++ /dev/null diff --git a/examples/hakyll/examples/feedblog.zip b/examples/hakyll/examples/feedblog.zip Binary files differdeleted file mode 100644 index 0adaf1e..0000000 --- a/examples/hakyll/examples/feedblog.zip +++ /dev/null diff --git a/examples/hakyll/examples/morepages.zip b/examples/hakyll/examples/morepages.zip Binary files differdeleted file mode 100644 index 617e0f6..0000000 --- a/examples/hakyll/examples/morepages.zip +++ /dev/null diff --git a/examples/hakyll/examples/simpleblog.zip b/examples/hakyll/examples/simpleblog.zip Binary files differdeleted file mode 100644 index a67f362..0000000 --- a/examples/hakyll/examples/simpleblog.zip +++ /dev/null diff --git a/examples/hakyll/examples/tagblog.zip b/examples/hakyll/examples/tagblog.zip Binary files differdeleted file mode 100644 index d758225..0000000 --- a/examples/hakyll/examples/tagblog.zip +++ /dev/null diff --git a/examples/hakyll/hakyll.hs b/examples/hakyll/hakyll.hs deleted file mode 100644 index df92ddd..0000000 --- a/examples/hakyll/hakyll.hs +++ /dev/null @@ -1,53 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -import Hakyll -import Control.Monad (forM_) -import Control.Arrow ((>>>), arr) -import Text.Pandoc - -main :: IO () -main = hakyll $ do - match "css/*" $ do - route idRoute - compile compressCssCompiler - - -- Static directories - forM_ ["images/*", "examples/*", "reference/**"] $ \f -> match f $ do - route idRoute - compile copyFileCompiler - - -- Pages - forM_ pages $ \p -> match p $ do - route $ setExtension "html" - compile $ pageCompiler - >>> requireA "sidebar.markdown" (setFieldA "sidebar" $ arr pageBody) - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler - - -- Tutorial - match "tutorial.markdown" $ do - route $ setExtension "html" - compile $ readPageCompiler - >>> pageRenderPandocWith defaultHakyllParserState withToc - >>> requireA "sidebar.markdown" (setFieldA "sidebar" $ arr pageBody) - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler - - -- Sidebar - match "sidebar.markdown" $ compile pageCompiler - - -- Templates - match "templates/*" $ compile templateCompiler - where - withToc = defaultHakyllWriterOptions - { writerTableOfContents = True - , writerTemplate = "<h2>Table of contents</h2>\n$toc$\n$body$" - , writerStandalone = True - } - - pages = [ "about.markdown" - , "changelog.markdown" - , "examples.markdown" - , "index.markdown" - , "philosophy.markdown" - , "reference.markdown" - ] diff --git a/examples/hakyll/images/brochure-files.png b/examples/hakyll/images/brochure-files.png Binary files differdeleted file mode 100644 index 41af36e..0000000 --- a/examples/hakyll/images/brochure-files.png +++ /dev/null diff --git a/examples/hakyll/images/hakyll-system-1.png b/examples/hakyll/images/hakyll-system-1.png Binary files differdeleted file mode 100644 index 69e850c..0000000 --- a/examples/hakyll/images/hakyll-system-1.png +++ /dev/null diff --git a/examples/hakyll/images/hakyll-system-2.png b/examples/hakyll/images/hakyll-system-2.png Binary files differdeleted file mode 100644 index eb424a9..0000000 --- a/examples/hakyll/images/hakyll-system-2.png +++ /dev/null diff --git a/examples/hakyll/images/hakyll-system-3.png b/examples/hakyll/images/hakyll-system-3.png Binary files differdeleted file mode 100644 index cdffe2d..0000000 --- a/examples/hakyll/images/hakyll-system-3.png +++ /dev/null diff --git a/examples/hakyll/images/lambda.png b/examples/hakyll/images/lambda.png Binary files differdeleted file mode 100644 index fbf34a8..0000000 --- a/examples/hakyll/images/lambda.png +++ /dev/null diff --git a/examples/hakyll/index.markdown b/examples/hakyll/index.markdown deleted file mode 100644 index ee44cf3..0000000 --- a/examples/hakyll/index.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Home ---- - -## Overview - -Hakyll is a [Haskell](http://haskell.org) library for generating static sites, -mostly aimed at small-to-medium sites and personal blogs. It is written in a -very configurable way and uses an [xmonad](http://xmonad.org)-like DSL for -configuration. - -Integration with [pandoc](http://johnmacfarlane.net/pandoc/) gives us markdown -and TeX support, including syntax highlighting and other goodies. - -## The Hakyll System - -### Write your content in whatever format you prefer - -![Write your content](/images/hakyll-system-1.png) - -### Create compilation rules in a Haskell EDSL - -![Write your rules](/images/hakyll-system-2.png) - -### Compile it to HTML and upload it! - -![Compile it](/images/hakyll-system-3.png) - -## Hakyll 3 - -Hakyll 3 has been released, and it can be installed by running -`cabal install hakyll`. For a limited time (but as long as is necessary) you can -access the old site and documentation [here](/hakyll2). - -## Getting Started - -You can get the latest version from hackage using `cabal install hakyll`. Then, -you can: - -- read the [tutorial](/tutorial.html); -- mail the [google discussion group](http://groups.google.com/group/hakyll); -- ask questions on the IRC channel: `#hakyll` on - [freenode](http://freenode.net/). diff --git a/examples/hakyll/philosophy.markdown b/examples/hakyll/philosophy.markdown deleted file mode 100644 index 07a20c3..0000000 --- a/examples/hakyll/philosophy.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Philosophy ---- - -## Small-to-medium sites - -Hakyll was written to be used for small-to-medium sites. You can do some -advanced things with it, but don't use it to build a big online shop. - -## Hakyll.hs - -It should be possible to put all configuration in one file, so data and -configuration can be strictly separated. In addition, we think this file should -never exceed a 100 lines of code. - -## High-level - -Hakyll tries to provide as many high-level functions as possible for common -tasks, while the lower-level functions should also be accessible. If you think -you're writing something that can be used for many sites, please send a patch, -or your `hakyll.hs`, and we will see what we can do. - -## Well-documented - -A key to being easy-to-use is documentation. That's why we try to provide as -many working examples as possible. If you ever create a site using hakyll, -please consider open-sourcing it, as people might be able to learn from your -code. diff --git a/examples/hakyll/reference.markdown b/examples/hakyll/reference.markdown deleted file mode 100644 index 9b4d9e4..0000000 --- a/examples/hakyll/reference.markdown +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Reference ---- - -## Reference - -We keep a copy of the reference of the latest stable version here. This -reference is automatically generated by -[Haddock](http://www.haskell.org/haddock/). You can -[find it here](reference/index.html). diff --git a/examples/hakyll/sidebar.markdown b/examples/hakyll/sidebar.markdown deleted file mode 100644 index 8396c75..0000000 --- a/examples/hakyll/sidebar.markdown +++ /dev/null @@ -1,9 +0,0 @@ -## Navigation - -[home](/index.html) -[philosophy](/philosophy.html) -[about](/about.html) -[tutorial](/tutorial.html) -[examples](/examples.html) -[reference](/reference.html) -[changelog](/changelog.html) diff --git a/examples/hakyll/templates/default.html b/examples/hakyll/templates/default.html deleted file mode 100644 index 040292c..0000000 --- a/examples/hakyll/templates/default.html +++ /dev/null @@ -1,72 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<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>Hakyll - $title$</title> - - <!-- Stylesheets. --> - <link rel="stylesheet" type="text/css" href="/css/default.css" /> - <link rel="stylesheet" type="text/css" href="/css/syntax.css" /> - - <!-- Metadata. --> - <meta name="keywords" content="hakyll,static site generator,static,site,generator,haskell,blog"/> - <meta name="description" content="Hakyll - A Static Site Generator in Haskell."/> - - <!-- Flattr JS --> - <!-- - <script type="text/javascript"> - /* <![CDATA[ */ - (function() { - var s = document.createElement('script'), t = - document.getElementsByTagName('script')[0]; - s.type = 'text/javascript'; - s.async = true; - s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto'; - t.parentNode.insertBefore(s, t); - })(); - /* ]]> */ - </script> - --> - </head> - <body> - <div id="main"> - <div id="header"> - <img src="/images/lambda.png" alt="lambda" /> - <h1>Hakyll - $title$</h1> - </div> - <!-- Sidebar. --> - <div id="sidebar"> - $sidebar$ - - <!-- Flattr button --> - <!-- - <a class="FlattrButton" style="display:none;" rev="flattr;button:compact;" href="http://jaspervdj.be/hakyll"></a> - <noscript><a href="http://flattr.com/thing/291889/Hakyll" target="_blank"> <img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a></noscript> - --> - </div> - - <div id="content"> - $body$ - </div> - - <div id="footer"> - Site proudly generated by <a href="http://github.com/jaspervdj/hakyll">hakyll</a>. - </div> - </div> - - <!-- Google Analytics --> - <script type="text/javascript"> - var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); - document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); - </script> - <script type="text/javascript"> - try { - var pageTracker = _gat._getTracker("UA-11993001-1"); - pageTracker._trackPageview(); - } catch(err) {} - </script> - </body> - -</html> diff --git a/examples/hakyll/templates/tutorial.html b/examples/hakyll/templates/tutorial.html deleted file mode 100644 index 6ce60b6..0000000 --- a/examples/hakyll/templates/tutorial.html +++ /dev/null @@ -1,10 +0,0 @@ -$body - -<h2>Helping out</h2> - -Hakyll is an open source project, and one of the hardest parts is writing -correct, up-to-date, and understandable documentation. Therefore, the -authors would really appreciate it if you would -<a href="http://groups.google.com/group/hakyll">give some feedback</a> about -the tutorials, and especially report errors or difficulties you encountered. -Thanks! diff --git a/examples/hakyll/templates/tutorialitem.html b/examples/hakyll/templates/tutorialitem.html deleted file mode 100644 index 01fb298..0000000 --- a/examples/hakyll/templates/tutorialitem.html +++ /dev/null @@ -1,3 +0,0 @@ -<li> - <a href="$url">$title</a> $what. -</li> diff --git a/examples/hakyll/templates/tutorials.html b/examples/hakyll/templates/tutorials.html deleted file mode 100644 index 6cbb4ac..0000000 --- a/examples/hakyll/templates/tutorials.html +++ /dev/null @@ -1,14 +0,0 @@ -<h2>Tutorials about Hakyll</h2> -<p> - Here is a list of tutorials I've written about Hakyll: -</p> -<ul> - $body -</ul> -<p> - All these tutorials assume you are using the latest stable version of - Hakyll. If this is not the case, you might want to update using: - <pre><code>ghc-pkg unregister hakyll -cabal update -cabal install hakyll</code></pre> -</p> diff --git a/examples/hakyll/tutorial.markdown b/examples/hakyll/tutorial.markdown deleted file mode 100644 index 920249d..0000000 --- a/examples/hakyll/tutorial.markdown +++ /dev/null @@ -1,351 +0,0 @@ ---- -title: Tutorial ---- - -Why static websites? --------------------- - -Modern web frameworks make it easy to create huge dynamic websites. Why would -anyone still care about a static website? - -- Static websites are fast, because it's simply files served directly from the - hard disk. -- Static websites are secure. Nobody has ever found an SQL injection in static - pages. -- Static websites are easy to deploy. Just copy them to your webhost using - (S)FTP/rsync/scp and you are done. They work on all webhosts: no CGI or extra - modules needed for the web server. - -Why Hakyll? ------------ - -Hakyll is a [Haskell] library meant for creating small-to-medium sized static -websites. It is a powerful publishing tool, precisely because of the power of -Haskell. By using the awesome [pandoc] library, it is able to create your -website from a large variety of input formats. - -[Haskell]: http://haskell.org/ -[pandoc]: http://johnmacfarlane.net/pandoc/ - -Features include: - -- easy templating system; -- a simple HTTP server for previewing and compiling your website on the go; -- powerful syntax highlighting; -- modules for common items such as tags and feeds; -- easily extensible. - -Let's get started! ------------------- - -We're going to discuss a small brochure site to start with. You can find all -code and files necessary to build this site [right here](/examples/brochure.zip) --- feel free to look at them as we go trough the tutorial, in fact, it might be -very learnful to have a closer look at the files as we discuss them. There's a -number of files we will use: - - about.rst A simple page written in RST format - code.lhs Another page with some code (which can be highlighted) - css Directory for CSS files - |- default.css The main CSS file - \- syntax.css CSS file for code syntax highlighting - hakyll.hs Our code to generate the site - images Directory for images - \- haskell-logo.png The logo of my favorite programming language - index.markdown A simple page in markdown format - templates Directory for templates - \- default.html The main template for the site - -By default, hakyll will compile everything to the `_site` directory. We can try -this like this: - - [jasper@phoenix] ghc --make hakyll.hs - [jasper@phoenix] ./hakyll build - -Instead of using `build`, we can also use `preview`, which will fire up a -webserver serving the `_site` directory, so have a look! - -All files have been compiled, and their output has been placed in the `_site` -directory as illustrated in this diagram: - -![Brochure files](/images/brochure-files.png) - -No magic is involved at all -- we will precisely study how and why our items are -compiled like that. All of this is specified in the `hakyll.hs` file. - -### Images - -Let's start of with the `images/haskell-logo.png` file, because the processing -of this file is very simple: it is simply copied to the output directory. Let's -look at the relevant lines in the `hakyll.hs` file: - -~~~~~{.haskell} -match "images/*" $ do - route idRoute - compile copyFileCompiler -~~~~~ - -The first line specifies we will describe the process for compiling everything -in the `images/` folder: hakyll uses globs for this [^pattern]. - -[^pattern]: A little caveat is that these globs are not `String`s but - `Pattern`s, so you need the `OverloadedStrings` extension. - -We can see two simple rules next: [route] and [compile]. - -- [route] determines how the input file(s) get mapped to the output files. - [route] only deals with file names -- not with the actual content! -- [compile], on the other hand, determines how the file content is processed. - -[route]: /reference/Hakyll-Core-Rules.html#v:route -[compile]: /reference/Hakyll-Core-Rules.html#v:compile - -In this case, we select the [idRoute]: which means the file name will be kept -the same (`_site` will always be prepended automatically). This explains the -name of [idRoute]: much like the `id` function in Haskell, it also maps values -to themselves. - -[idRoute]: /reference/Hakyll-Core-Routes.html#v:idRoute - -For our compiler, we use [copyFileCompiler], meaning that we don't process the -content at all, we just copy the file. - -[copyFileCompiler]: /reference/Hakyll-Core-Writable-CopyFile.html#v:copyFileCompiler - -### CSS - -If we look at how the two CSS files are processed, we see something which looks -very familiar: - -~~~~~{.haskell} -match "css/*" $ do - route idRoute - compile compressCssCompiler -~~~~~ - -Indeed, the only difference with the images is that have now chosen for -[compressCssCompiler] -- a compiler which *does* process the content. Let's have -a quick look at the type of [compressCssCompiler]: - -[compressCssCompiler]: /reference/Hakyll-Web-CompressCss.html#v:compressCssCompiler - -~~~~~{.haskell} -compressCssCompiler :: Compiler Resource String -~~~~~ - -Intuitively, we can see this as a process which takes a `Resource` and produces -a `String`. - -- A `Resource` is simply the Hakyll representation of an item -- usually just a - file on the disk. -- The produced string is the processed CSS. - -We can wonder what Hakyll does with the resulting `String`. Well, it simply -writes this to the file specified in the `route`! As you can see, routes and -compilers work together to produce your site. - -### Templates - -Next, we can see that the templates are compiled: - -~~~~~{.haskell} -match "templates/*" $ compile templateCompiler -~~~~~ - -Let's start with the basics: what is a template? An example template gives us a -good impression: - -~~~~~ -<html> - <head> - <title>Hakyll Example - $title$</title> - </head> - <body> - <h1>$title$</h1> - - $body$ - </body> -</html> -~~~~~ - -A template is a text file to lay our some content. The content it lays out is -called a page -- we'll see that in the next section. The syntax for templates is -intentionally very simplistic. You can bind some content by referencing the name -of the content *field* by using `$field$`, and that's it. - -You might have noticed how we specify a compiler (`compile`), but we don't set -any `route`. Why is this? - -Precisely because we don't want to our template to end up anywhere in our site -directory! We want to use it to lay out other items -- so we need to load -(compile) it, but we don't want to give it a real destination. - -By using the `templates/*` pattern, we compile all templates in one go. - -### Pages - -The code for pages looks suspiciously more complicated: - -~~~~~~{.haskell} -match (list ["about.rst", "index.markdown", "code.lhs"]) $ do - route $ setExtension "html" - compile $ pageCompiler - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler -~~~~~~ - -But we'll see shortly that this actually fairly straightforward. Let's begin by -exploring what a *page* is. - -~~~~~~ ---- -title: Home -author: Jasper ---- - -So, I decided to create a site using Hakyll and... -~~~~~~ - -A page consists of two parts: a body, and metadata. As you can see above, the -syntax is not hard. The metadata part is completely optional, this is the same -page without metadata: - -~~~~~~ -So, I decided to create a site using Hakyll and... -~~~~~~ - -Hakyll supports a number of formats for the page body. Markdown, HTML and RST -are probably the most common. Hakyll will automatically guess the right format -if you use the right extension for your page. - -~~~~~~{.haskell} -match (list ["about.rst", "index.markdown", "code.lhs"]) $ do -~~~~~~ - -We see a more complicated pattern here. Some sets of files cannot be described -easily by just one pattern, and here the [list] function can help us out. In -this case, we have three specific pages we want to compile. - -[list]: /reference/Hakyll-Core-Identifier-Pattern.html#v:list - -~~~~~~{.haskell} -route $ setExtension "html" -~~~~~~ - -For our pages, we do not want to use `idRoute` -- after all, we want to generate -`.html` files, not `.markdown` files or something similar! The [setExtension] -route allows you to simply replace the extension of an item, which is what we -want here. - -[setExtension]: /reference/Hakyll-Core-Routes.html#v:setExtension - -~~~~~~{.haskell} -compile $ pageCompiler - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler -~~~~~~ - -How should we process these pages? [pageCompiler] is the default compiler for -pages. [pageCompiler] does a few things: - -- It parses the page into body and metadata -- It adds some extra metadata fields such as `$url$` and `$path$` (you shouldn't - worry about these for now) -- It fill in possible `$key$`'s in it's own body -- It renders the page using pandoc - -Which basically means that we end up with a `Page` that has the HTML content we -want as body. But we don't just want the plain content on our website -- we want -to decorate it with a template, for starters. - -[pageCompiler]: /reference/Hakyll-Web-Page.html#v:pageCompiler - -Different compilers can be chained in a pipeline-like way using Arrows. Arrows -form a complicated subject, but fortunately, most Hakyll users need not be -concerned with the details. If you are interested, you can find some information -on the [Understanding arrows] page -- but the only thing you really *need* to -know is that you can chain compilers using the `>>>` operator. - -[Understanding arrows]: http://en.wikibooks.org/wiki/Haskell/Understanding_arrows - -The `>>>` operator is a lot like a flipped function composition (`flip (.)`) in -Haskell, with the important difference that `>>>` is more general and works on -all Arrows -- including Hakyll compilers. - -Here, we apply three compilers sequentially: - -1. We load and render the page using `pageCompiler` -2. We apply the template we previously loaded using [applyTemplateCompiler] -3. We relativize the URL's on the page using [relativizeUrlsCompiler] - -[applyTemplateCompiler]: /reference/Hakyll-Web-Template.html#v:applyTemplateCompiler -[relativizeUrlsCompiler]: /reference/Hakyll-Web-RelativizeUrls.html#v:relativizeUrlsCompiler - -Relativizing URL's is a very handy feature. It means that we can just use -absolute URL's everywhere in our templates and code, e.g.: - -~~~~~{.haskell} -<link rel="stylesheet" type="text/css" href="/css/default.css" /> -~~~~~ - -And Hakyll will translate this to a relative URL for each page. This means we -can host our site at `example.com` and `example.com/subdir` without changing a -single line of code. - -More tutorials are in the works... - -Various tips and tricks ------------------------ - -### Syntax highlighting - -Syntax highlighting is enabled by default in Hakyll. However, you also need to -enable it in pandoc. If no syntax highlighting shows up, try - - [jasper@phoenix] cabal install --reinstall -fhighlighting pandoc - -### When to rebuild - -If you execute a `./hakyll build`, Hakyll will build your site incrementally. -This means it will be very fast, but it will not pick up _all_ changes. - -- In case you edited `hakyll.hs`, you first want to compile it again. -- It is generally recommended to do a `./hakyll rebuild` before you deploy your - site. - -After rebuilding your site, all files will look as "modified" to the filesystem. -This means that when you upload your site, it will usually transfer all files -- -this can generate more traffic than necessary, since it is possible that some -files were not actually modified. If you use `rsync`, you can counter this using -the `--checksum` option. - -Problems --------- - -### regex-pcre dependency on Mac OS - -Hakyll requires [regex-pcre], which might fail to build on Mac OS. To solve -this problem, make sure the [pcre] C library is installed (via homebrew or -macports). Then install [regex-pcre] using: - - cabal install --extra-include-dirs=/usr/local/include regex-pcre - -or - - cabal install --extra-include-dirs=/opt/local/include regex-pcre - -...and proceed to install Hakyll the regular way. - -[regex-pcre]: http://hackage.haskell.org/package/regex-pcre -[pcre]: http://www.pcre.org/ - -### "File name does not match module name" on Mac OS - - Hakyll.hs:1:1: - File name does not match module name: - Saw: `Main' - Expected: `Hakyll' - -Is an error encountered on Mac OS when `hakyll.hs` is located on a -case-insensitive filesystem. A workaround is to rename it to something that -isn't the name of the module, for example, `site.hs`. diff --git a/examples/morepages/about.markdown b/examples/morepages/about.markdown deleted file mode 100644 index 65d8e9f..0000000 --- a/examples/morepages/about.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: About ---- - -## Mattis - -Nullam imperdiet sodales orci vitae molestie. Nunc quam orci, pharetra a -rhoncus vitae, eleifend id felis. Suspendisse potenti. Etiam vitae urna orci. -Quisque pellentesque dignissim felis, egestas tempus urna luctus vitae. In hac -habitasse platea dictumst. Morbi fringilla mattis odio, et mattis tellus -accumsan vitae. - -## Orci - -Vivamus eget mauris sit amet nulla laoreet lobortis. Nulla in diam elementum -risus convallis commodo. Cras vehicula varius dui vitae facilisis. Proin -elementum libero eget leo aliquet quis euismod orci vestibulum. Duis rhoncus -lorem consequat tellus vestibulum aliquam. Quisque orci orci, malesuada porta -blandit et, interdum nec magna. - -## Augue - -In urna ante, pulvinar et imperdiet nec, fermentum ac tortor. Cras tristique -pellentesque euismod. Pellentesque est ante, sagittis vitae vehicula vitae, -ullamcorper eget lectus. Curabitur egestas accumsan leo, ac ullamcorper nibh -tincidunt id. Curabitur lorem libero, fermentum non tincidunt ac, pretium in -libero. Donec vel mi eu tortor accumsan dictum ut in augue. Vestibulum est -lorem, bibendum eu vehicula eu, convallis eget mauris. diff --git a/examples/morepages/css/default.css b/examples/morepages/css/default.css deleted file mode 100644 index 76607cf..0000000 --- a/examples/morepages/css/default.css +++ /dev/null @@ -1,28 +0,0 @@ -body { - width: 600px; - margin: 0px auto 0px auto; -} - -div#navigation { - text-align: center; - border-bottom: 4px solid black; -} - -div#navigation a { - color: white; - text-decoration: none; - background-color: black; - padding: 3px 10px 3px 10px; - margin: 0px 10px 0px 10px; -} - -div.column { - width: 30%; - float: left; - margin: 0px 10px 0px 10px; -} - -div#footer { - clear: both; - border-top: 4px solid black; -} diff --git a/examples/morepages/footer.markdown b/examples/morepages/footer.markdown deleted file mode 100644 index afcb47d..0000000 --- a/examples/morepages/footer.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Footer ---- - -## Sapien - -In hac habitasse platea dictumst. Cras placerat felis nec risus varius in -accumsan sem fermentum. Vestibulum elementum aliquam tortor semper vulputate. -Vivamus tincidunt tellus sed purus tempor fringilla. Morbi dui nisl, eleifend -non dictum vitae, luctus eu lacus. Duis vitae lacus sem, ut porta mauris. -Aenean sed ultricies dui. Vivamus ullamcorper metus lorem, at ornare nibh. -Mauris mi metus, convallis id lobortis vitae, interdum quis felis. Cras elit -massa, pellentesque sit amet pharetra ut, volutpat in arcu. Vivamus blandit, -ligula et ultricies consequat, metus sem congue quam, ac pretium enim velit at -tortor. Cras in tellus eu sapien pulvinar sollicitudin eu id ipsum. Mauris nec -urna tellus, et scelerisque tellus. Nunc imperdiet felis nec libero consectetur -tristique tristique ipsum sodales. Cras tortor nisl, condimentum in -pellentesque id, interdum vel mi. Suspendisse auctor vehicula orci at -scelerisque. Vivamus quis sagittis felis. diff --git a/examples/morepages/hakyll.hs b/examples/morepages/hakyll.hs deleted file mode 100644 index c1b96e6..0000000 --- a/examples/morepages/hakyll.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE OverloadedStrings, Arrows #-} -module Main where - -import Control.Monad (forM_) -import Control.Arrow (arr, (>>>)) - -import Hakyll - -main :: IO () -main = hakyll $ do - -- Compress CSS - match "css/*" $ do - route idRoute - compile compressCssCompiler - - -- Render static pages - forM_ ["about.markdown", "index.markdown", "products.markdown"] $ \p -> - match p $ do - route $ setExtension ".html" - compile $ pageCompiler - >>> requireA "footer.markdown" (setFieldA "footer" $ arr pageBody) - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler - - -- Compile footer - match "footer.markdown" $ compile pageCompiler - - -- Read templates - match "templates/*" $ compile templateCompiler diff --git a/examples/morepages/index.markdown b/examples/morepages/index.markdown deleted file mode 100644 index 16fffd6..0000000 --- a/examples/morepages/index.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Home ---- - -## Purus - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce tempor, urna et -auctor tincidunt, eros mauris facilisis purus, eget sollicitudin leo massa sit -amet ipsum. Vivamus eu massa in urna vehicula rutrum eget sit amet purus. - -## Ligula - -Mauris sit amet justo mi. Curabitur vel quam felis. In hac habitasse platea -dictumst. Etiam nec consequat risus. Donec consequat est vitae neque fermentum -feugiat nec ac nibh. Nulla rhoncus, odio quis scelerisque rutrum, metus sem -tempor ante, a ornare ipsum felis sed ligula. Morbi urna lectus, scelerisque -non pharetra in, rutrum quis ligula. Phasellus semper ullamcorper arcu eu -auctor. - -## Justo - -Aliquam sagittis tincidunt libero ut elementum. Ut sit amet vestibulum metus. -Ut aliquet congue neque eu tincidunt. Integer eu elit sed massa sollicitudin -vehicula nec ut sem. Cras euismod enim eget purus lacinia non feugiat urna -imperdiet. Aliquam justo sem, viverra eu vehicula vitae, imperdiet vel magna. diff --git a/examples/morepages/products.markdown b/examples/morepages/products.markdown deleted file mode 100644 index 68ffd36..0000000 --- a/examples/morepages/products.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Products ---- - -## Lacus - -Etiam condimentum auctor semper. Donec lobortis, magna id sodales sollicitudin, -lectus mi egestas nulla, pulvinar lobortis nunc eros id nisl. Curabitur -imperdiet, erat at accumsan vulputate, purus nunc blandit nulla, dictum -vestibulum sem lorem eget ipsum. - -## Vitae - -Integer ut dui eu felis mollis vestibulum. Etiam at nibh id diam aliquet -vestibulum sit amet a nibh. Aliquam erat volutpat. Etiam vitae nulla at dolor -fringilla tempor ut a nunc. Pellentesque elementum elit lorem. Quisque nec -ligula ipsum. Nunc augue lacus, ullamcorper vel dapibus in, mattis eget elit. - -## Feugiat - -Pellentesque enim dui, interdum elementum vehicula luctus, feugiat vitae arcu. -Vestibulum ut felis justo. Quisque vestibulum mauris eget ipsum luctus -consequat. Nunc tincidunt, turpis ut fermentum dapibus, -justo tortor bibendum sem, at facilisis justo odio luctus lectus. diff --git a/examples/morepages/templates/default.html b/examples/morepages/templates/default.html deleted file mode 100644 index 6cd490a..0000000 --- a/examples/morepages/templates/default.html +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<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>MyAweSomeCompany - $title$</title> - <link rel="stylesheet" type="text/css" href="/css/default.css" /> - </head> - <body> - <h1>MyAweSomeCompany - $title$</h1> - <div id="navigation"> - <a href="/">Home</a> - <a href="/about.html">About</a> - <a href="/products.html">Products</a> - </div> - - $body$ - - <div id="footer"> - $footer$ - </div> - </body> -</html> diff --git a/examples/simpleblog/css/default.css b/examples/simpleblog/css/default.css deleted file mode 100644 index 9ed2b01..0000000 --- a/examples/simpleblog/css/default.css +++ /dev/null @@ -1,17 +0,0 @@ -body { - width: 600px; - margin: 0px auto 0px auto; -} - -div#navigation { - text-align: center; - border-bottom: 4px solid black; -} - -div#navigation a { - color: white; - text-decoration: none; - background-color: black; - padding: 3px 10px 3px 10px; - margin: 0px 10px 0px 10px; -} diff --git a/examples/simpleblog/hakyll.hs b/examples/simpleblog/hakyll.hs deleted file mode 100644 index 270c3e3..0000000 --- a/examples/simpleblog/hakyll.hs +++ /dev/null @@ -1,55 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -module Main where - -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 - match "css/*" $ do - route idRoute - compile compressCssCompiler - - -- Render posts - match "posts/*" $ do - route $ setExtension ".html" - compile $ pageCompiler - >>> applyTemplateCompiler "templates/post.html" - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler - - -- Render posts list - match "posts.html" $ route idRoute - create "posts.html" $ constA mempty - >>> arr (setField "title" "All posts") - >>> requireAllA "posts/*" addPostList - >>> applyTemplateCompiler "templates/posts.html" - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler - - -- Index - match "index.html" $ route 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 - match "templates/*" $ compile templateCompiler - --- | 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/posts/2009-11-05-a-first-post.markdown b/examples/simpleblog/posts/2009-11-05-a-first-post.markdown deleted file mode 100644 index 56b0405..0000000 --- a/examples/simpleblog/posts/2009-11-05-a-first-post.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: A first post -author: Julius Caesar -date: November 5, 2009 ---- -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus pretium leo -adipiscing lectus iaculis lobortis. Vivamus scelerisque velit dignissim metus -gravida sit amet dapibus ligula tempor. Quisque sit amet viverra nunc. -Suspendisse cursus elementum ante, ut venenatis nisi dictum eu. Nulla diam -ligula, eleifend in varius quis, malesuada a nibh. Vivamus consequat -pellentesque erat non blandit. Nunc sit amet eros vel massa semper ullamcorper -quis iaculis magna. Vestibulum ullamcorper urna sit amet est elementum -pulvinar. Vestibulum consequat lacus ac quam hendrerit tincidunt. Praesent -bibendum vehicula diam, nec sagittis risus tempus a. Nulla quis odio sit amet -odio vehicula cursus ut id odio. Curabitur semper magna euismod magna mollis -venenatis. Nunc eget eleifend velit. Mauris sed posuere sem. Fusce id nunc -nisi, a aliquam orci. Suspendisse laoreet justo non enim laoreet eget consequat -velit porttitor. Aenean faucibus sodales metus at tincidunt. Donec vestibulum -leo pulvinar erat auctor ac ultrices massa euismod. Phasellus blandit cursus -magna, eget lacinia mi lobortis sed. Suspendisse ultricies enim ligula, vel -scelerisque mauris. diff --git a/examples/simpleblog/posts/2009-11-10-another-post.markdown b/examples/simpleblog/posts/2009-11-10-another-post.markdown deleted file mode 100644 index 69b64c9..0000000 --- a/examples/simpleblog/posts/2009-11-10-another-post.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Another post -author: Marcus Tullius Cicero -date: November 10, 2009 ---- -Vestibulum in ultrices urna. Etiam tempor enim dui, nec malesuada elit. Donec -tempor ligula et quam volutpat quis fermentum eros congue. Sed ut pulvinar sem. -Sed aliquam ipsum id purus sollicitudin vulputate. Cras et mauris dui, vel -hendrerit leo. Ut metus ipsum, fermentum ac malesuada id, tempus pharetra quam. -Donec diam felis, consequat ac scelerisque cursus, gravida non lectus. Sed -faucibus elit dapibus diam elementum id varius nisi tristique. Proin consequat -faucibus neque in aliquam. Vestibulum ligula odio, pulvinar vel hendrerit -vitae, egestas ut nibh. Praesent ut velit elit, in consequat dolor. Praesent -sem enim, commodo in gravida sed, adipiscing vel eros. Lorem ipsum dolor sit -amet, consectetur adipiscing elit. Proin non aliquam nunc. diff --git a/examples/simpleblog/posts/2009-11-28-a-third-post.markdown b/examples/simpleblog/posts/2009-11-28-a-third-post.markdown deleted file mode 100644 index 76b0606..0000000 --- a/examples/simpleblog/posts/2009-11-28-a-third-post.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: A third post -author: Publius Ovidius Naso -date: November 28, 2009 ---- -Pellentesque tempor blandit elit, vel ultricies arcu congue egestas. Fusce -vitae rutrum nisl. Fusce id mauris libero, a venenatis tellus. Fusce iaculis, -lorem et ornare molestie, mauris risus mollis nisi, non fermentum lacus lacus -sit amet ipsum. Praesent lobortis ullamcorper dolor, eget convallis ligula -dignissim a. Suspendisse nulla nisi, congue et pharetra vel, convallis non -libero. Ut a nulla ipsum. Phasellus cursus velit id neque viverra ut -pellentesque justo posuere. Curabitur laoreet enim et velit tempor consectetur. -Donec eu pretium urna. Suspendisse vitae nisi at metus vestibulum aliquam in -sit amet nisl. Donec convallis lacinia odio, vestibulum molestie nunc feugiat -a. Suspendisse vehicula, sapien id aliquet consectetur, sem sapien ullamcorper -arcu, scelerisque porttitor elit ipsum posuere ligula. Nulla at velit eu metus -tincidunt auctor ut sit amet enim. Donec placerat dapibus nisi id facilisis. -Maecenas pellentesque pulvinar auctor. Curabitur gravida quam sit amet purus -consectetur blandit. diff --git a/examples/simpleblog/posts/2009-12-04-this-blog-aint-dead.markdown b/examples/simpleblog/posts/2009-12-04-this-blog-aint-dead.markdown deleted file mode 100644 index 015ce8d..0000000 --- a/examples/simpleblog/posts/2009-12-04-this-blog-aint-dead.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: This blog ain't dead -author: Marcus Antonius -date: December 4, 2009 ---- -Etiam non felis aliquet tellus dictum vestibulum. Aliquam accumsan mauris non -lacus ultricies nec lacinia enim rhoncus. Curabitur vel tortor massa, elementum -tincidunt elit. Maecenas venenatis luctus arcu ut ullamcorper. Donec interdum -dolor eu enim tristique vel vehicula risus mollis. Nunc nec tortor quam. Nulla -a mauris arcu. Phasellus venenatis tortor vel odio tincidunt consequat. Integer -venenatis nibh vitae lectus laoreet eu feugiat nunc pretium. Integer nec turpis -metus, in fermentum lorem. diff --git a/examples/simpleblog/posts/2009-12-23-almost-christmas.markdown b/examples/simpleblog/posts/2009-12-23-almost-christmas.markdown deleted file mode 100644 index cf24399..0000000 --- a/examples/simpleblog/posts/2009-12-23-almost-christmas.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Almost Christmas! -author: Publius Vergilius Maro -date: December 23, 2009 ---- -Morbi tincidunt eleifend ante, eu gravida ante rutrum vel. Nunc bibendum nulla -tellus, eget egestas sapien. Nam rhoncus interdum libero, eget congue orci -imperdiet eu. Quisque pellentesque fringilla urna, ac venenatis ante ultricies -et. Pellentesque habitant morbi tristique senectus et netus et malesuada fames -ac turpis egestas. Mauris eleifend sagittis ultrices. Quisque ultrices accumsan -nisl, sed pellentesque metus porta vitae. Nulla facilisi. In et nibh tincidunt -mi volutpat pellentesque vitae nec sapien. Integer massa ipsum, pellentesque in -elementum at, cursus sit amet diam. diff --git a/examples/simpleblog/templates/default.html b/examples/simpleblog/templates/default.html deleted file mode 100644 index 01ed20e..0000000 --- a/examples/simpleblog/templates/default.html +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<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="/css/default.css" /> - </head> - <body> - <h1>SimpleBlog - $title$</h1> - <div id="navigation"> - <a href="/index.html">Home</a> - <a href="/posts.html">All posts</a> - </div> - - $body$ - </body> -</html> diff --git a/examples/simpleblog/templates/index.html b/examples/simpleblog/templates/index.html deleted file mode 100644 index ebda08d..0000000 --- a/examples/simpleblog/templates/index.html +++ /dev/null @@ -1,14 +0,0 @@ -<div id="posts"> - <h1>Recent posts</h1> - <ul> - $posts$ - </ul> - <a href="/posts.html">All posts…</a> -</div> - -<div class="about"> - <h1>About</h1> - <p> - This is a sample blog for educational purposes. - </p> -</div> diff --git a/examples/simpleblog/templates/post.html b/examples/simpleblog/templates/post.html deleted file mode 100644 index dd0db95..0000000 --- a/examples/simpleblog/templates/post.html +++ /dev/null @@ -1,5 +0,0 @@ -<h1>$title$</h1> - -<p>by <em>$author$</em> on <strong>$date$</strong></p> - -$body$ diff --git a/examples/simpleblog/templates/postitem.html b/examples/simpleblog/templates/postitem.html deleted file mode 100644 index 19c954b..0000000 --- a/examples/simpleblog/templates/postitem.html +++ /dev/null @@ -1,4 +0,0 @@ -<li> - <a href="/$url$">$title$</a> - - <em>$date$</em> - by <em>$author$</em> -</li> diff --git a/examples/simpleblog/templates/posts.html b/examples/simpleblog/templates/posts.html deleted file mode 100644 index 2bec161..0000000 --- a/examples/simpleblog/templates/posts.html +++ /dev/null @@ -1,4 +0,0 @@ -<h1>All posts</h1> -<ul> - $posts$ -</ul> diff --git a/examples/tagblog/css/default.css b/examples/tagblog/css/default.css deleted file mode 100644 index 9ed2b01..0000000 --- a/examples/tagblog/css/default.css +++ /dev/null @@ -1,17 +0,0 @@ -body { - width: 600px; - margin: 0px auto 0px auto; -} - -div#navigation { - text-align: center; - border-bottom: 4px solid black; -} - -div#navigation a { - color: white; - text-decoration: none; - background-color: black; - padding: 3px 10px 3px 10px; - margin: 0px 10px 0px 10px; -} diff --git a/examples/tagblog/hakyll.hs b/examples/tagblog/hakyll.hs deleted file mode 100644 index 0f1e7ab..0000000 --- a/examples/tagblog/hakyll.hs +++ /dev/null @@ -1,99 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -module Main where - -import Prelude hiding (id) -import Control.Arrow ((>>>), (***), arr) -import Control.Category (id) -import Data.Monoid (mempty, mconcat) - -import Hakyll - -main :: IO () -main = hakyll $ do - -- Compress CSS - match "css/*" $ do - route idRoute - compile compressCssCompiler - - -- Render posts - match "posts/*" $ do - route $ setExtension ".html" - compile $ pageCompiler - >>> arr (renderDateField "date" "%B %e, %Y" "Date unknown") - >>> renderTagsField "prettytags" (fromCapture "tags/*") - >>> applyTemplateCompiler "templates/post.html" - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler - - -- Render posts list - match "posts.html" $ route idRoute - create "posts.html" $ constA mempty - >>> arr (setField "title" "All posts") - >>> requireAllA "posts/*" addPostList - >>> applyTemplateCompiler "templates/posts.html" - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler - - -- Index - match "index.html" $ route idRoute - create "index.html" $ constA mempty - >>> arr (setField "title" "Home") - >>> requireA "tags" (setFieldA "tagcloud" (renderTagCloud')) - >>> requireAllA "posts/*" (id *** arr (take 3 . reverse . sortByBaseName) >>> addPostList) - >>> applyTemplateCompiler "templates/index.html" - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler - - -- Tags - create "tags" $ - requireAll "posts/*" (\_ ps -> readTags ps :: Tags String) - - -- Add a tag list compiler for every tag - match "tags/*" $ route $ setExtension ".html" - metaCompile $ require_ "tags" - >>> arr tagsMap - >>> arr (map (\(t, p) -> (tagIdentifier t, makeTagList t p))) - - -- Render RSS feed - match "rss.xml" $ route idRoute - create "rss.xml" $ - requireAll_ "posts/*" - >>> mapCompiler (arr $ copyBodyToField "description") - >>> renderRss feedConfiguration - - -- Read templates - match "templates/*" $ compile templateCompiler - where - renderTagCloud' :: Compiler (Tags String) String - renderTagCloud' = renderTagCloud tagIdentifier 100 120 - - tagIdentifier :: String -> Identifier - tagIdentifier = fromCapture "tags/*" - --- | 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 - -makeTagList :: String - -> [Page String] - -> Compiler () (Page String) -makeTagList tag posts = - constA (mempty, posts) - >>> addPostList - >>> arr (setField "title" ("Posts tagged ‘" ++ tag ++ "’")) - >>> applyTemplateCompiler "templates/posts.html" - >>> applyTemplateCompiler "templates/default.html" - -feedConfiguration :: FeedConfiguration -feedConfiguration = FeedConfiguration - { feedTitle = "SimpleBlog RSS feed." - , feedDescription = "A simple demo of an RSS feed created with Hakyll." - , feedAuthorName = "Jasper Van der Jeugt" - , feedRoot = "http://example.com" - } diff --git a/examples/tagblog/posts/2009-11-05-a-first-post.markdown b/examples/tagblog/posts/2009-11-05-a-first-post.markdown deleted file mode 100644 index 3c9d4ab..0000000 --- a/examples/tagblog/posts/2009-11-05-a-first-post.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: A first post -author: Julius Caesar -tags: caesar, random crap ---- - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus pretium leo -adipiscing lectus iaculis lobortis. Vivamus scelerisque velit dignissim metus -gravida sit amet dapibus ligula tempor. Quisque sit amet viverra nunc. -Suspendisse cursus elementum ante, ut venenatis nisi dictum eu. Nulla diam -ligula, eleifend in varius quis, malesuada a nibh. Vivamus consequat -pellentesque erat non blandit. Nunc sit amet eros vel massa semper ullamcorper -quis iaculis magna. Vestibulum ullamcorper urna sit amet est elementum -pulvinar. Vestibulum consequat lacus ac quam hendrerit tincidunt. Praesent -bibendum vehicula diam, nec sagittis risus tempus a. Nulla quis odio sit amet -odio vehicula cursus ut id odio. Curabitur semper magna euismod magna mollis -venenatis. Nunc eget eleifend velit. Mauris sed posuere sem. Fusce id nunc -nisi, a aliquam orci. Suspendisse laoreet justo non enim laoreet eget consequat -velit porttitor. Aenean faucibus sodales metus at tincidunt. Donec vestibulum -leo pulvinar erat auctor ac ultrices massa euismod. Phasellus blandit cursus -magna, eget lacinia mi lobortis sed. Suspendisse ultricies enim ligula, vel -scelerisque mauris. diff --git a/examples/tagblog/posts/2009-11-10-another-post.markdown b/examples/tagblog/posts/2009-11-10-another-post.markdown deleted file mode 100644 index 2fffc7c..0000000 --- a/examples/tagblog/posts/2009-11-10-another-post.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Another post -author: Marcus Tullius Cicero -tags: cicero, random crap ---- - -Vestibulum in ultrices urna. Etiam tempor enim dui, nec malesuada elit. Donec -tempor ligula et quam volutpat quis fermentum eros congue. Sed ut pulvinar sem. -Sed aliquam ipsum id purus sollicitudin vulputate. Cras et mauris dui, vel -hendrerit leo. Ut metus ipsum, fermentum ac malesuada id, tempus pharetra quam. -Donec diam felis, consequat ac scelerisque cursus, gravida non lectus. Sed -faucibus elit dapibus diam elementum id varius nisi tristique. Proin consequat -faucibus neque in aliquam. Vestibulum ligula odio, pulvinar vel hendrerit -vitae, egestas ut nibh. Praesent ut velit elit, in consequat dolor. Praesent -sem enim, commodo in gravida sed, adipiscing vel eros. Lorem ipsum dolor sit -amet, consectetur adipiscing elit. Proin non aliquam nunc. diff --git a/examples/tagblog/posts/2009-11-28-a-third-post.markdown b/examples/tagblog/posts/2009-11-28-a-third-post.markdown deleted file mode 100644 index afabcc7..0000000 --- a/examples/tagblog/posts/2009-11-28-a-third-post.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: A third post -author: Publius Ovidius Naso -tags: epic fail, ovidius ---- - -Pellentesque tempor blandit elit, vel ultricies arcu congue egestas. Fusce -vitae rutrum nisl. Fusce id mauris libero, a venenatis tellus. Fusce iaculis, -lorem et ornare molestie, mauris risus mollis nisi, non fermentum lacus lacus -sit amet ipsum. Praesent lobortis ullamcorper dolor, eget convallis ligula -dignissim a. Suspendisse nulla nisi, congue et pharetra vel, convallis non -libero. Ut a nulla ipsum. Phasellus cursus velit id neque viverra ut -pellentesque justo posuere. Curabitur laoreet enim et velit tempor consectetur. -Donec eu pretium urna. Suspendisse vitae nisi at metus vestibulum aliquam in -sit amet nisl. Donec convallis lacinia odio, vestibulum molestie nunc feugiat -a. Suspendisse vehicula, sapien id aliquet consectetur, sem sapien ullamcorper -arcu, scelerisque porttitor elit ipsum posuere ligula. Nulla at velit eu metus -tincidunt auctor ut sit amet enim. Donec placerat dapibus nisi id facilisis. -Maecenas pellentesque pulvinar auctor. Curabitur gravida quam sit amet purus -consectetur blandit. diff --git a/examples/tagblog/posts/2009-12-04-this-blog-aint-dead.markdown b/examples/tagblog/posts/2009-12-04-this-blog-aint-dead.markdown deleted file mode 100644 index 0c56146..0000000 --- a/examples/tagblog/posts/2009-12-04-this-blog-aint-dead.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: This blog ain't dead -author: Marcus Antonius -tags: epic fail, antonius ---- - -Etiam non felis aliquet tellus dictum vestibulum. Aliquam accumsan mauris non -lacus ultricies nec lacinia enim rhoncus. Curabitur vel tortor massa, elementum -tincidunt elit. Maecenas venenatis luctus arcu ut ullamcorper. Donec interdum -dolor eu enim tristique vel vehicula risus mollis. Nunc nec tortor quam. Nulla -a mauris arcu. Phasellus venenatis tortor vel odio tincidunt consequat. Integer -venenatis nibh vitae lectus laoreet eu feugiat nunc pretium. Integer nec turpis -metus, in fermentum lorem. diff --git a/examples/tagblog/posts/2009-12-23-almost-christmas.markdown b/examples/tagblog/posts/2009-12-23-almost-christmas.markdown deleted file mode 100644 index 78a1508..0000000 --- a/examples/tagblog/posts/2009-12-23-almost-christmas.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Almost Christmas! -author: Publius Vergilius Maro -tags: christmas, random crap ---- - -Morbi tincidunt eleifend ante, eu gravida ante rutrum vel. Nunc bibendum nulla -tellus, eget egestas sapien. Nam rhoncus interdum libero, eget congue orci -imperdiet eu. Quisque pellentesque fringilla urna, ac venenatis ante ultricies -et. Pellentesque habitant morbi tristique senectus et netus et malesuada fames -ac turpis egestas. Mauris eleifend sagittis ultrices. Quisque ultrices accumsan -nisl, sed pellentesque metus porta vitae. Nulla facilisi. In et nibh tincidunt -mi volutpat pellentesque vitae nec sapien. Integer massa ipsum, pellentesque in -elementum at, cursus sit amet diam. diff --git a/examples/tagblog/templates/default.html b/examples/tagblog/templates/default.html deleted file mode 100644 index 0537065..0000000 --- a/examples/tagblog/templates/default.html +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<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="/css/default.css" /> - <link rel="alternate" - type="application/rss+xml" - title="SimpleBlog" - href="/rss.xml" /> - </head> - <body> - <h1>SimpleBlog - $title$</h1> - <div id="navigation"> - <a href="/">Home</a> - <a href="/posts.html">All posts</a> - </div> - - $body$ - </body> -</html> diff --git a/examples/tagblog/templates/index.html b/examples/tagblog/templates/index.html deleted file mode 100644 index 7152d02..0000000 --- a/examples/tagblog/templates/index.html +++ /dev/null @@ -1,19 +0,0 @@ -<div id="posts"> - <h1>Recent posts</h1> - <ul> - $posts$ - </ul> - <p><a href="/posts.html">All posts…</a></p> - - <h1>Tags</h1> - <div> - $tagcloud$ - </div> -</div> - -<div class="about"> - <h1>About</h1> - <p> - This is a sample blog for educational purposes. - </p> -</div> diff --git a/examples/tagblog/templates/post.html b/examples/tagblog/templates/post.html deleted file mode 100644 index 0233fc1..0000000 --- a/examples/tagblog/templates/post.html +++ /dev/null @@ -1,7 +0,0 @@ -<h1>$title$</h1> - -<p>by <em>$author$</em> on <strong>$date$</strong></p> - -<p>Tagged as: $prettytags$.</p> - -$body$ diff --git a/examples/tagblog/templates/postitem.html b/examples/tagblog/templates/postitem.html deleted file mode 100644 index ccbb58e..0000000 --- a/examples/tagblog/templates/postitem.html +++ /dev/null @@ -1,4 +0,0 @@ -<li> - <a href="$url$">$title$</a> - - <em>$date$</em> - by <em>$author$</em> -</li> diff --git a/examples/tagblog/templates/posts.html b/examples/tagblog/templates/posts.html deleted file mode 100644 index 758c670..0000000 --- a/examples/tagblog/templates/posts.html +++ /dev/null @@ -1,4 +0,0 @@ -<h1>$title$</h1> -<ul> - $posts$ -</ul> |