on master help sign in
Merge pull request #451 from lortabac/master

Include file name in error messages

commit68e9c7704216f88b73162963c06ef80616ff318a authorJasper Van der Jeugt <jaspervdj@gmail.com> dateSat 23 Jul 2016, 16:04 (10 years ago) parent363571f871cfd3
3 files changed+19−5
src/Hakyll/Web/Feed.hs+5−1 src/Hakyll/Web/Template.hs+6−3 src/Hakyll/Web/Template/Internal.hs+8−1
src/Hakyll/Web/Feed.hs+5−1
@@ -33,6 +33,7 @@ import Hakyll.Core.Compiler.Internal
3333import Hakyll.Core.Item
3434import Hakyll.Web.Template
3535import Hakyll.Web.Template.Context
36+import Hakyll.Web.Template.Internal
3637import Hakyll.Web.Template.List
3738
3839
@@ -72,7 +73,10 @@ renderFeed feedPath itemPath config itemContext items = do
7273 applyTemplate feedTpl feedContext body
7374 where
7475 -- Auxiliary: load a template from a datafile
75− loadTemplate = fmap readTemplate . readFile <=< getDataFileName
76+ loadTemplate path = do
77+ file <- getDataFileName path
78+ templ <- readFile file
79+ return $ readTemplateFile file templ
7680
7781 itemContext' = mconcat
7882 [ itemContext
src/Hakyll/Web/Template.hs+6−3
@@ -147,14 +147,16 @@ import Hakyll.Web.Template.Internal
147147templateBodyCompiler :: Compiler (Item Template)
148148templateBodyCompiler = cached "Hakyll.Web.Template.templateBodyCompiler" $ do
149149 item <- getResourceBody
150− return $ fmap readTemplate item
150+ file <- getResourceFilePath
151+ return $ fmap (readTemplateFile file) item
151152
152153--------------------------------------------------------------------------------
153154-- | Read complete file contents as a template
154155templateCompiler :: Compiler (Item Template)
155156templateCompiler = cached "Hakyll.Web.Template.templateCompiler" $ do
156157 item <- getResourceString
157− return $ fmap readTemplate item
158+ file <- getResourceFilePath
159+ return $ fmap (readTemplateFile file) item
158160
159161
160162--------------------------------------------------------------------------------
@@ -259,5 +261,6 @@ applyAsTemplate :: Context String -- ^ Context
259261 -> Item String -- ^ Item and template
260262 -> Compiler (Item String) -- ^ Resulting item
261263applyAsTemplate context item =
262− let tpl = readTemplate $ itemBody item
264+ let tpl = readTemplateFile file (itemBody item)
265+ file = toFilePath $ itemIdentifier item
263266 in applyTemplate tpl context item
src/Hakyll/Web/Template/Internal.hs+8−1
@@ -8,6 +8,7 @@ module Hakyll.Web.Template.Internal
88 , TemplateExpr (..)
99 , TemplateElement (..)
1010 , readTemplate
11+ , readTemplateFile
1112 ) where
1213
1314
@@ -120,10 +121,16 @@ instance Binary TemplateExpr where
120121
121122--------------------------------------------------------------------------------
122123readTemplate :: String -> Template
123−readTemplate input = case P.parse topLevelTemplate "" input of
124+readTemplate = readTemplateFile "{literal}"
125+
126+
127+--------------------------------------------------------------------------------
128+readTemplateFile :: FilePath -> String -> Template
129+readTemplateFile file input = case P.parse topLevelTemplate file input of
124130 Left err -> error $ "Cannot parse template: " ++ show err
125131 Right t -> t
126132
133+
127134--------------------------------------------------------------------------------
128135topLevelTemplate :: P.Parser Template
129136topLevelTemplate = Template <$>