summaryrefslogtreecommitdiff
path: root/src/Hakyll/Web
diff options
context:
space:
mode:
authorJasper Van der Jeugt <m@jaspervdj.be>2012-12-15 18:02:47 +0100
committerJasper Van der Jeugt <m@jaspervdj.be>2012-12-15 18:02:47 +0100
commite633df17dd72703a541c46d829096dfe40b75e50 (patch)
treec8514b0a05fed2e0e359d479c934cbd9ae504abf /src/Hakyll/Web
parent3f42c9cd6f45bb306d622f3ffa175e2a8b0910e1 (diff)
downloadhakyll-e633df17dd72703a541c46d829096dfe40b75e50.tar.gz
Rename pageCompiler to pandocCompiler
Diffstat (limited to 'src/Hakyll/Web')
-rw-r--r--src/Hakyll/Web/Page.hs92
-rw-r--r--src/Hakyll/Web/Pandoc.hs35
2 files changed, 34 insertions, 93 deletions
diff --git a/src/Hakyll/Web/Page.hs b/src/Hakyll/Web/Page.hs
deleted file mode 100644
index f58f948..0000000
--- a/src/Hakyll/Web/Page.hs
+++ /dev/null
@@ -1,92 +0,0 @@
---------------------------------------------------------------------------------
--- | 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
---
--- * metadata (of the type @Map String String@);
---
--- * the actual value (of the type @a@).
---
--- Usually, the value will be a 'String' as well, and the value will be the body
--- of the page.
---
--- However, this is certainly no restriction. For example, @Page ByteString@
--- could be used to represent a binary item (e.g. an image) and some metadata.
---
--- 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.
-module Hakyll.Web.Page
- ( pageCompiler
- , pageCompilerWith
- , pageCompilerWithPandoc
- ) where
-
-
---------------------------------------------------------------------------------
-import Control.Applicative ((<$>))
-import Text.Pandoc (Pandoc, ParserState, WriterOptions)
-
-
---------------------------------------------------------------------------------
-import Hakyll.Core.Compiler
-import Hakyll.Core.Item
-import Hakyll.Web.Pandoc
-
-
---------------------------------------------------------------------------------
--- | Read a page render using pandoc
-pageCompiler :: Compiler (Item String)
-pageCompiler =
- pageCompilerWith defaultHakyllParserState defaultHakyllWriterOptions
-
-
---------------------------------------------------------------------------------
--- | A version of 'pageCompiler' which allows you to specify your own pandoc
--- options
-pageCompilerWith :: ParserState -> WriterOptions -> Compiler (Item String)
-pageCompilerWith state options = pageCompilerWithPandoc state options id
-
-
---------------------------------------------------------------------------------
--- | An extension of 'pageCompilerWith' which allows you to specify a custom
--- pandoc transformation for the content
-pageCompilerWithPandoc :: ParserState -> WriterOptions
- -> (Pandoc -> Pandoc)
- -> Compiler (Item String)
-pageCompilerWithPandoc state options f = cached cacheName $
- writePandocWith options . fmap f . readPandocWith state <$> getResourceBody
- where
- cacheName = "Hakyll.Web.Page.pageCompilerWithPandoc"
diff --git a/src/Hakyll/Web/Pandoc.hs b/src/Hakyll/Web/Pandoc.hs
index c2319dc..82784be 100644
--- a/src/Hakyll/Web/Pandoc.hs
+++ b/src/Hakyll/Web/Pandoc.hs
@@ -1,5 +1,5 @@
--------------------------------------------------------------------------------
--- | Module exporting convenientpandoc bindings
+-- | Module exporting convenient pandoc bindings
module Hakyll.Web.Pandoc
( -- * The basic building blocks
readPandoc
@@ -9,6 +9,11 @@ module Hakyll.Web.Pandoc
, renderPandoc
, renderPandocWith
+ -- * Derived compilers
+ , pandocCompiler
+ , pandocCompilerWith
+ , pandocCompilerWithTransform
+
-- * Default options
, defaultHakyllParserState
, defaultHakyllWriterOptions
@@ -16,10 +21,12 @@ module Hakyll.Web.Pandoc
--------------------------------------------------------------------------------
+import Control.Applicative ((<$>))
import Text.Pandoc
--------------------------------------------------------------------------------
+import Hakyll.Core.Compiler
import Hakyll.Core.Item
import Hakyll.Web.Pandoc.FileType
@@ -79,6 +86,32 @@ renderPandocWith state options = writePandocWith options . readPandocWith state
--------------------------------------------------------------------------------
+-- | Read a page render using pandoc
+pandocCompiler :: Compiler (Item String)
+pandocCompiler =
+ pandocCompilerWith defaultHakyllParserState defaultHakyllWriterOptions
+
+
+--------------------------------------------------------------------------------
+-- | A version of 'pandocCompiler' which allows you to specify your own pandoc
+-- options
+pandocCompilerWith :: ParserState -> WriterOptions -> Compiler (Item String)
+pandocCompilerWith state options = pandocCompilerWithTransform state options id
+
+
+--------------------------------------------------------------------------------
+-- | An extension of 'pandocCompilerWith' which allows you to specify a custom
+-- pandoc transformation for the content
+pandocCompilerWithTransform :: ParserState -> WriterOptions
+ -> (Pandoc -> Pandoc)
+ -> Compiler (Item String)
+pandocCompilerWithTransform state options f = cached cacheName $
+ writePandocWith options . fmap f . readPandocWith state <$> getResourceBody
+ where
+ cacheName = "Hakyll.Web.Page.pageCompilerWithPandoc"
+
+
+--------------------------------------------------------------------------------
-- | The default reader options for pandoc parsing in hakyll
defaultHakyllParserState :: ParserState
defaultHakyllParserState = defaultParserState