hakyll-3.1.0.0: A simple static site generator library.

Hakyll.Web.Page

Description

A page is a key-value mapping, representing a page on your site

A page is an important concept in Hakyll. It is a key-value mapping, and has one field with an arbitrary type. A Page thus consists of

  • a key-value mapping (of the type Map String String);
  • a value (of the type a).

Usually, the value will be a String as well, and the value will be the body of the page.

Pages can be constructed using Haskell, but they are usually parsed from a file. The file format for pages is pretty straightforward.

 This is a simple page
 consisting of two lines.

This is a valid page with two lines. If we load this in Hakyll, there would be no metadata, and the body would be the given text. Let's look at a page with some metadata.

 ---
 title: Alice's Adventures in Wonderland
 author: Lewis Caroll
 year: 1865
 ---

 Chapter I
 =========

 Down the Rabbit-Hole
 --------------------

 Alice was beginning to get very tired of sitting by her sister on the bank,
 and of having nothing to do: once or twice she had peeped into the book her
 sister was reading, but it had no pictures or conversations in it, "and
 what is the use of a book," thought Alice "without pictures or
 conversation?"

 ...

As you can see, we construct a metadata header in Hakyll using ---. Then, we simply list all key: value pairs, and end with --- again. This page contains three metadata fields and a body. The body is given in markdown format, which can be easily rendered to HTML by Hakyll, using pandoc.

Synopsis

Documentation

data Page a Source

Type used to represent pages

Constructors

Page 

Instances

Functor Page 
Typeable1 Page 
Eq a => Eq (Page a) 
Show a => Show (Page a) 
Monoid a => Monoid (Page a) 
Binary a => Binary (Page a) 
Writable a => Writable (Page a) 

fromBody :: a -> Page aSource

Create a page from a body, without metadata

fromMap :: Monoid a => Map String String -> Page aSource

Create a metadata page, without a body

toMap :: Page String -> Map String StringSource

Convert a page to a map. The body will be placed in the body key.

readPageCompiler :: Compiler Resource (Page String)Source

Read a page (do not render it)

pageCompiler :: Compiler Resource (Page String)Source

Read a page, add default fields, substitute fields and render using pandoc

addDefaultFields :: Compiler (Page a) (Page a)Source

Add a number of default metadata fields to a page. These fields include:

  • $url
  • $category
  • $title
  • $path

sortByBaseName :: [Page a] -> [Page a]Source

Sort posts based on the basename of the post. This is equivalent to a chronologival sort, because of the year-month-day-title.extension naming convention in Hakyll.