Remove examples from this repo
15
.gitignore
vendored
|
@ -1,7 +1,3 @@
|
||||||
##
|
|
||||||
## gitignore(5) -- specify ignored files
|
|
||||||
##
|
|
||||||
|
|
||||||
# Ignore swap files and cabal output.
|
# Ignore swap files and cabal output.
|
||||||
*.hi
|
*.hi
|
||||||
*.o
|
*.o
|
||||||
|
@ -15,10 +11,11 @@ tags
|
||||||
|
|
||||||
# Ignore test builds.
|
# Ignore test builds.
|
||||||
tests/Main
|
tests/Main
|
||||||
|
_cache
|
||||||
|
_store
|
||||||
|
|
||||||
# Rest of the file: ignore examples
|
# Rest of the file: ignore examples
|
||||||
examples/*/_cache
|
web/_cache
|
||||||
examples/*/_site
|
web/_site
|
||||||
examples/*/hakyll
|
web/hakyll
|
||||||
examples/hakyll/reference
|
web/reference
|
||||||
|
|
||||||
|
|
4
Makefile
|
@ -1,8 +1,8 @@
|
||||||
# Generate the docs and copy them to the website dir
|
# Generate the docs and copy them to the website dir
|
||||||
haddock:
|
haddock:
|
||||||
cabal haddock --hyperlink-source
|
cabal haddock --hyperlink-source
|
||||||
rm -rf examples/hakyll/reference/
|
rm -rf web/reference/
|
||||||
cp -r dist/doc/html/hakyll/ examples/hakyll/reference/
|
cp -r dist/doc/html/hakyll/ web/reference/
|
||||||
|
|
||||||
# Run the tests
|
# Run the tests
|
||||||
test:
|
test:
|
||||||
|
|
|
@ -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)
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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
|
|
|
@ -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.
|
|
|
@ -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>
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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"
|
|
||||||
}
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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>
|
|
|
@ -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>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<h1>$title$</h1>
|
|
||||||
|
|
||||||
<p>by <em>$author$</em> on <strong>$date$</strong></p>
|
|
||||||
|
|
||||||
$body$
|
|
|
@ -1,4 +0,0 @@
|
||||||
<li>
|
|
||||||
<a href="$url$">$title$</a>
|
|
||||||
- <em>$date$</em> - by <em>$author$</em>
|
|
||||||
</li>
|
|
|
@ -1,4 +0,0 @@
|
||||||
<h1>All posts</h1>
|
|
||||||
<ul>
|
|
||||||
$posts$
|
|
||||||
</ul>
|
|
|
@ -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; }
|
|
|
@ -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.
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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.
|
|
|
@ -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
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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>
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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>
|
|
|
@ -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>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<h1>$title$</h1>
|
|
||||||
|
|
||||||
<p>by <em>$author$</em> on <strong>$date$</strong></p>
|
|
||||||
|
|
||||||
$body$
|
|
|
@ -1,4 +0,0 @@
|
||||||
<li>
|
|
||||||
<a href="/$url$">$title$</a>
|
|
||||||
- <em>$date$</em> - by <em>$author$</em>
|
|
||||||
</li>
|
|
|
@ -1,4 +0,0 @@
|
||||||
<h1>All posts</h1>
|
|
||||||
<ul>
|
|
||||||
$posts$
|
|
||||||
</ul>
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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"
|
|
||||||
}
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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>
|
|
|
@ -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>
|
|
|
@ -1,7 +0,0 @@
|
||||||
<h1>$title$</h1>
|
|
||||||
|
|
||||||
<p>by <em>$author$</em> on <strong>$date$</strong></p>
|
|
||||||
|
|
||||||
<p>Tagged as: $prettytags$.</p>
|
|
||||||
|
|
||||||
$body$
|
|
|
@ -1,4 +0,0 @@
|
||||||
<li>
|
|
||||||
<a href="$url$">$title$</a>
|
|
||||||
- <em>$date$</em> - by <em>$author$</em>
|
|
||||||
</li>
|
|
|
@ -1,4 +0,0 @@
|
||||||
<h1>$title$</h1>
|
|
||||||
<ul>
|
|
||||||
$posts$
|
|
||||||
</ul>
|
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 878 B After Width: | Height: | Size: 878 B |