Merge pull request #451 from lortabac/master
Include file name in error messages
This commit is contained in:
commit
68e9c77042
3 changed files with 19 additions and 5 deletions
|
@ -33,6 +33,7 @@ import Hakyll.Core.Compiler.Internal
|
||||||
import Hakyll.Core.Item
|
import Hakyll.Core.Item
|
||||||
import Hakyll.Web.Template
|
import Hakyll.Web.Template
|
||||||
import Hakyll.Web.Template.Context
|
import Hakyll.Web.Template.Context
|
||||||
|
import Hakyll.Web.Template.Internal
|
||||||
import Hakyll.Web.Template.List
|
import Hakyll.Web.Template.List
|
||||||
|
|
||||||
|
|
||||||
|
@ -72,7 +73,10 @@ renderFeed feedPath itemPath config itemContext items = do
|
||||||
applyTemplate feedTpl feedContext body
|
applyTemplate feedTpl feedContext body
|
||||||
where
|
where
|
||||||
-- Auxiliary: load a template from a datafile
|
-- Auxiliary: load a template from a datafile
|
||||||
loadTemplate = fmap readTemplate . readFile <=< getDataFileName
|
loadTemplate path = do
|
||||||
|
file <- getDataFileName path
|
||||||
|
templ <- readFile file
|
||||||
|
return $ readTemplateFile file templ
|
||||||
|
|
||||||
itemContext' = mconcat
|
itemContext' = mconcat
|
||||||
[ itemContext
|
[ itemContext
|
||||||
|
|
|
@ -147,14 +147,16 @@ import Hakyll.Web.Template.Internal
|
||||||
templateBodyCompiler :: Compiler (Item Template)
|
templateBodyCompiler :: Compiler (Item Template)
|
||||||
templateBodyCompiler = cached "Hakyll.Web.Template.templateBodyCompiler" $ do
|
templateBodyCompiler = cached "Hakyll.Web.Template.templateBodyCompiler" $ do
|
||||||
item <- getResourceBody
|
item <- getResourceBody
|
||||||
return $ fmap readTemplate item
|
file <- getResourceFilePath
|
||||||
|
return $ fmap (readTemplateFile file) item
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- | Read complete file contents as a template
|
-- | Read complete file contents as a template
|
||||||
templateCompiler :: Compiler (Item Template)
|
templateCompiler :: Compiler (Item Template)
|
||||||
templateCompiler = cached "Hakyll.Web.Template.templateCompiler" $ do
|
templateCompiler = cached "Hakyll.Web.Template.templateCompiler" $ do
|
||||||
item <- getResourceString
|
item <- getResourceString
|
||||||
return $ fmap readTemplate item
|
file <- getResourceFilePath
|
||||||
|
return $ fmap (readTemplateFile file) item
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
@ -259,5 +261,6 @@ applyAsTemplate :: Context String -- ^ Context
|
||||||
-> Item String -- ^ Item and template
|
-> Item String -- ^ Item and template
|
||||||
-> Compiler (Item String) -- ^ Resulting item
|
-> Compiler (Item String) -- ^ Resulting item
|
||||||
applyAsTemplate context item =
|
applyAsTemplate context item =
|
||||||
let tpl = readTemplate $ itemBody item
|
let tpl = readTemplateFile file (itemBody item)
|
||||||
|
file = toFilePath $ itemIdentifier item
|
||||||
in applyTemplate tpl context item
|
in applyTemplate tpl context item
|
||||||
|
|
|
@ -8,6 +8,7 @@ module Hakyll.Web.Template.Internal
|
||||||
, TemplateExpr (..)
|
, TemplateExpr (..)
|
||||||
, TemplateElement (..)
|
, TemplateElement (..)
|
||||||
, readTemplate
|
, readTemplate
|
||||||
|
, readTemplateFile
|
||||||
) where
|
) where
|
||||||
|
|
||||||
|
|
||||||
|
@ -120,10 +121,16 @@ instance Binary TemplateExpr where
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
readTemplate :: String -> Template
|
readTemplate :: String -> Template
|
||||||
readTemplate input = case P.parse topLevelTemplate "" input of
|
readTemplate = readTemplateFile "{literal}"
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
readTemplateFile :: FilePath -> String -> Template
|
||||||
|
readTemplateFile file input = case P.parse topLevelTemplate file input of
|
||||||
Left err -> error $ "Cannot parse template: " ++ show err
|
Left err -> error $ "Cannot parse template: " ++ show err
|
||||||
Right t -> t
|
Right t -> t
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
topLevelTemplate :: P.Parser Template
|
topLevelTemplate :: P.Parser Template
|
||||||
topLevelTemplate = Template <$>
|
topLevelTemplate = Template <$>
|
||||||
|
|
Loading…
Reference in a new issue