diff options
author | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-12-15 18:02:47 +0100 |
---|---|---|
committer | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-12-15 18:02:47 +0100 |
commit | e633df17dd72703a541c46d829096dfe40b75e50 (patch) | |
tree | c8514b0a05fed2e0e359d479c934cbd9ae504abf /src/Hakyll/Web | |
parent | 3f42c9cd6f45bb306d622f3ffa175e2a8b0910e1 (diff) | |
download | hakyll-e633df17dd72703a541c46d829096dfe40b75e50.tar.gz |
Rename pageCompiler to pandocCompiler
Diffstat (limited to 'src/Hakyll/Web')
-rw-r--r-- | src/Hakyll/Web/Page.hs | 92 | ||||
-rw-r--r-- | src/Hakyll/Web/Pandoc.hs | 35 |
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 |