diff options
author | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2010-01-12 14:48:16 +0100 |
---|---|---|
committer | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2010-01-12 14:48:16 +0100 |
commit | a26f84dab5a49ce0fa00c7a0acfe84059451db5b (patch) | |
tree | 90884deb9f3793f39dd699866a9313dd24ccc609 | |
parent | ecd00b386e2848cab19c16afdcaeae3133f39569 (diff) | |
download | hakyll-a26f84dab5a49ce0fa00c7a0acfe84059451db5b.tar.gz |
Added pure renderAndConcat function.
-rw-r--r-- | src/Text/Hakyll/Render.hs | 14 | ||||
-rw-r--r-- | src/Text/Hakyll/Render/Internal.hs | 13 |
2 files changed, 18 insertions, 9 deletions
diff --git a/src/Text/Hakyll/Render.hs b/src/Text/Hakyll/Render.hs index c55e5d8..d8deea2 100644 --- a/src/Text/Hakyll/Render.hs +++ b/src/Text/Hakyll/Render.hs @@ -10,7 +10,7 @@ module Text.Hakyll.Render , css ) where -import Control.Monad (unless, mapM, foldM) +import Control.Monad (unless, mapM) import System.Directory (copyFile) import System.IO @@ -64,14 +64,10 @@ renderAndConcatWith :: Renderable a -> FilePath -> [a] -> IO String -renderAndConcatWith manipulation templatePath renderables = - foldM concatRender' [] renderables - where - concatRender' :: Renderable a => String -> a -> IO String - concatRender' chunk renderable = do - rendered <- renderWith manipulation templatePath renderable - let body = getBody rendered - return $ chunk ++ body +renderAndConcatWith manipulation templatePath renderables = do + template <- readFile templatePath + contexts <- mapM toContext renderables + return $ pureRenderAndConcatWith manipulation template contexts -- | Chain a render action for a page with a number of templates. This will -- also write the result to the site destination. This is the preferred way diff --git a/src/Text/Hakyll/Render/Internal.hs b/src/Text/Hakyll/Render/Internal.hs index eca15a0..3b9bfbb 100644 --- a/src/Text/Hakyll/Render/Internal.hs +++ b/src/Text/Hakyll/Render/Internal.hs @@ -4,6 +4,7 @@ module Text.Hakyll.Render.Internal , regularSubstitute , finalSubstitute , pureRenderWith + , pureRenderAndConcatWith , pureRenderChainWith , writePage ) where @@ -55,6 +56,18 @@ pureRenderWith manipulation template context = -- Force the body to be rendered. in ($|) id rnf (M.insert "body" body context) +-- | A pure renderAndConcat function. +pureRenderAndConcatWith :: ContextManipulation + -> String -- ^ Template to use. + -> [Context] -- ^ Different renderables. + -> String +pureRenderAndConcatWith manipulation template contexts = + foldl' renderAndConcat [] contexts + where + renderAndConcat chunk context = + let rendered = pureRenderWith manipulation template context + in chunk ++ fromMaybe "" (M.lookup "body" rendered) + -- | A pure renderChain function. pureRenderChainWith :: ContextManipulation -> [String] |