@@ -128,7 +128,7 @@
128128-- > <p>
129129-- > $for(counts)-$
130130-- > $count$
131−-- > $-sep-$...
131+-- > $-sep$...
132132-- > $-endfor$
133133-- > </p>
134134--
@@ -148,6 +148,7 @@ module Hakyll.Web.Template
148148 , loadAndApplyTemplate
149149 , applyAsTemplate
150150 , readTemplate
151+ , unsafeReadTemplateFile
151152 ) where
152153
153154
@@ -188,24 +189,31 @@ instance IsString Template where
188189 fromString = readTemplate
189190
190191
192+--------------------------------------------------------------------------------
193+-- | Wrap the constructor to ensure trim is called.
194+template :: [TemplateElement] -> Template
195+template = Template . trim
196+
197+
191198--------------------------------------------------------------------------------
192199readTemplate :: String -> Template
193200readTemplate = Template . trim . readTemplateElems
194201
195−
196202--------------------------------------------------------------------------------
197203-- | Read a template, without metadata header
198204templateBodyCompiler :: Compiler (Item Template)
199205templateBodyCompiler = cached "Hakyll.Web.Template.templateBodyCompiler" $ do
200206 item <- getResourceBody
201− return $ fmap readTemplate item
207+ file <- getResourceFilePath
208+ return $ fmap (template . readTemplateElemsFile file) item
202209
203210--------------------------------------------------------------------------------
204211-- | Read complete file contents as a template
205212templateCompiler :: Compiler (Item Template)
206213templateCompiler = cached "Hakyll.Web.Template.templateCompiler" $ do
207214 item <- getResourceString
208− return $ fmap readTemplate item
215+ file <- getResourceFilePath
216+ return $ fmap (template . readTemplateElemsFile file) item
209217
210218
211219--------------------------------------------------------------------------------
@@ -317,5 +325,14 @@ applyAsTemplate :: Context String -- ^ Context
317325 -> Item String -- ^ Item and template
318326 -> Compiler (Item String) -- ^ Resulting item
319327applyAsTemplate context item =
320− let tpl = readTemplate $ itemBody item
328+ let tpl = template $ readTemplateElemsFile file (itemBody item)
329+ file = toFilePath $ itemIdentifier item
321330 in applyTemplate tpl context item
331+
332+
333+--------------------------------------------------------------------------------
334+unsafeReadTemplateFile :: FilePath -> Compiler Template
335+unsafeReadTemplateFile file = do
336+ tpl <- unsafeCompiler $ readFile file
337+ pure $ template $ readTemplateElemsFile file tpl
338+