on master help sign in
Add pageCompilerWithPandoc
7ff2d79Jasper Van der Jeugt
src/Hakyll/Web/Page.hs+17−6
@@ -54,6 +54,7 @@ module Hakyll.Web.Page
54 , readPageCompiler
54 , readPageCompiler
55 , pageCompiler
55 , pageCompiler
56 , pageCompilerWith
56 , pageCompilerWith
57+ , pageCompilerWithPandoc
57 , addDefaultFields
58 , addDefaultFields
58 , sortByBaseName
59 , sortByBaseName
59 ) where
60 ) where
@@ -66,7 +67,7 @@ import qualified Data.Map as M
66import Data.List (sortBy)
67import Data.List (sortBy)
67import Data.Ord (comparing)
68import Data.Ord (comparing)
68
69
69−import Text.Pandoc (ParserState, WriterOptions)
70+import Text.Pandoc (Pandoc, ParserState, WriterOptions)
70
71
71import Hakyll.Core.Identifier
72import Hakyll.Core.Identifier
72import Hakyll.Core.Compiler
73import Hakyll.Core.Compiler
@@ -91,16 +92,26 @@ readPageCompiler = getResourceString >>^ readPage
91-- | Read a page, add default fields, substitute fields and render using pandoc
92-- | Read a page, add default fields, substitute fields and render using pandoc
92--
93--
93pageCompiler :: Compiler Resource (Page String)
94pageCompiler :: Compiler Resource (Page String)
94−pageCompiler = cached "Hakyll.Web.Page.pageCompiler" $
95+pageCompiler =
95− readPageCompiler >>> addDefaultFields >>> arr applySelf >>> pageRenderPandoc
96+ pageCompilerWith defaultHakyllParserState defaultHakyllWriterOptions
96
97
97-- | A version of 'pageCompiler' which allows you to specify your own pandoc
98-- | A version of 'pageCompiler' which allows you to specify your own pandoc
98-- options
99-- options
99--
100--
100−pageCompilerWith :: ParserState -> WriterOptions -> Compiler Resource (Page String)
101+pageCompilerWith :: ParserState -> WriterOptions
101−pageCompilerWith state options = cached "pageCompilerWith" $
102+ -> Compiler Resource (Page String)
103+pageCompilerWith state options = pageCompilerWithPandoc state options id
104+
105+-- | An extension of 'pageCompilerWith' which allows you to specify a custom
106+-- pandoc transformer for the content
107+--
108+pageCompilerWithPandoc :: ParserState -> WriterOptions
109+ -> (Pandoc -> Pandoc)
110+ -> Compiler Resource (Page String)
111+pageCompilerWithPandoc state options f = cached "pageCompilerWithPandoc" $
102 readPageCompiler >>> addDefaultFields >>> arr applySelf
112 readPageCompiler >>> addDefaultFields >>> arr applySelf
103− >>> pageRenderPandocWith state options
113+ >>> pageReadPandocWith state
114+ >>> arr (fmap (writePandocWith options . f))
104
115
105-- | Add a number of default metadata fields to a page. These fields include:
116-- | Add a number of default metadata fields to a page. These fields include:
106--
117--