module Shakebook.Mustache (
Text.Mustache.Template
, buildPageAction
, buildPageAction'
, compileTemplate'
) where
import Data.Aeson
import Development.Shake.Plus
import RIO
import qualified Slick.Mustache
import Text.Mustache
compileTemplate' :: (MonadAction m, FileLike b a) => a -> m Template
compileTemplate' = liftAction . Slick.Mustache.compileTemplate' . toFilePath . toFile
buildPageAction :: (MonadAction m, FileLike b a, FileLike b' a')
=> a
-> Value
-> a'
-> m ()
buildPageAction template value out = do
pageT <- compileTemplate' template
writeFile' out $ substitute pageT value
buildPageAction' :: (MonadAction m, FileLike b a) => a -> Value -> a -> m ()
buildPageAction' = buildPageAction