@@ -18,6 +18,7 @@ module Hakyll.Web.Template.Internal
20--------------------------------------------------------------------------------
20--------------------------------------------------------------------------------
21+import Control.Applicative ((<|>))
21import Control.Monad.Except (MonadError (..))
22import Control.Monad.Except (MonadError (..))
22import Data.Binary (Binary)
23import Data.Binary (Binary)
23import Data.List (intercalate)
24import Data.List (intercalate)
@@ -134,8 +135,13 @@ applyTemplate' tes context x = go tes
134 "got StringField for expr " ++ show e
135 "got StringField for expr " ++ show e
135 ListField c xs -> do
136 ListField c xs -> do
136 sep <- maybe (return "") go s
137 sep <- maybe (return "") go s
137− bs <- mapM (applyTemplate' b c) xs
138+ bs <- mapM (applyTemplate' b $ combineContexts context x c) xs
138 return $ intercalate sep bs
139 return $ intercalate sep bs
141+ combineContexts :: Context a -> Item a -> Context b -> Context b
142+ combineContexts ca ia cb = Context $ \ k' args' ib' ->
143+ unContext cb k' args' ib'
144+ <|> unContext ca k' args' ia
140 applyElem (Partial e) = do
146 applyElem (Partial e) = do
141 p <- applyExpr e >>= getString e
147 p <- applyExpr e >>= getString e