packages feed

heist-extra-0.3.0.0: src/Heist/Extra/Splices/List.hs

module Heist.Extra.Splices.List where

import Data.Map.Syntax ((##))
import Heist qualified as H
import Heist.Interpreted qualified as HI

-- | A splice that applies a non-empty list
listSplice :: [a] -> Text -> (a -> H.Splices (HI.Splice Identity)) -> HI.Splice Identity
listSplice xs childTag childSplice = do
  if null xs
    then pure mempty
    else HI.runChildrenWith $ do
      childTag ##
        (HI.runChildrenWith . childSplice)
          `foldMapM` xs