summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Hakyll/Web/Template/Internal.hs24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/Hakyll/Web/Template/Internal.hs b/src/Hakyll/Web/Template/Internal.hs
index 89bda52..983bd16 100644
--- a/src/Hakyll/Web/Template/Internal.hs
+++ b/src/Hakyll/Web/Template/Internal.hs
@@ -141,7 +141,7 @@ template :: P.Parser Template
template = mconcat <$> P.many (P.choice [ lift chunk
, lift escaped
, conditional
- , lift for
+ , for
, lift partial
, lift expr
])
@@ -222,15 +222,27 @@ conditional = P.try $ do
--------------------------------------------------------------------------------
-for :: P.Parser TemplateElement
+for :: P.Parser Template
for = P.try $ do
- void $ P.string "$for("
+ trimLFor <- trimOpen
+ void $ P.string "for("
e <- expr'
- void $ P.string ")$"
+ void $ P.char ')'
+ trimRFor <- trimClose
+
body <- template
sep <- P.optionMaybe $ P.try (P.string "$sep$") >> template
- void $ P.string "$endfor$"
- return $ For e body sep
+
+ trimLEnd <- trimOpen
+ void $ P.string "endfor"
+ trimREnd <- trimClose
+
+ pure $ Template $ mconcat [ [TrimL | trimLFor]
+ , [TrimR | trimRFor]
+ , [For e body sep]
+ , [TrimL | trimLEnd]
+ , [TrimR | trimREnd]
+ ]
--------------------------------------------------------------------------------