From 3d713e9f2c08dc40e67340b9e6717bb6f6adb20c Mon Sep 17 00:00:00 2001 From: Lorenzo Date: Fri, 22 Jul 2016 16:37:18 +0200 Subject: Fail if template is not parsed until eof This should fix the second problem in #376. --- src/Hakyll/Web/Template/Internal.hs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/Hakyll/Web/Template/Internal.hs b/src/Hakyll/Web/Template/Internal.hs index 45db2e4..aa8e080 100644 --- a/src/Hakyll/Web/Template/Internal.hs +++ b/src/Hakyll/Web/Template/Internal.hs @@ -120,15 +120,22 @@ instance Binary TemplateExpr where -------------------------------------------------------------------------------- readTemplate :: String -> Template -readTemplate input = case P.parse template "" input of +readTemplate input = case P.parse topLevelTemplate "" input of Left err -> error $ "Cannot parse template: " ++ show err Right t -> t +-------------------------------------------------------------------------------- +topLevelTemplate :: P.Parser Template +topLevelTemplate = Template <$> + P.manyTill templateElement P.eof -------------------------------------------------------------------------------- template :: P.Parser Template -template = Template <$> - (P.many $ chunk <|> escaped <|> conditional <|> for <|> partial <|> expr) +template = Template <$> P.many templateElement + +-------------------------------------------------------------------------------- +templateElement :: P.Parser TemplateElement +templateElement = chunk <|> escaped <|> conditional <|> for <|> partial <|> expr -------------------------------------------------------------------------------- -- cgit v1.2.3