Как обновить код с помощью loadTemplates для нового Heist API?

Этот код работал с Heist до изменения 0.10.0

main = do
      Right ts <- loadTemplates "templates" $
          bindSplices mySplices defaultHeistState
      etc..

Теперь я получаю ошибку

testdb.hs:59:33: Not in scope: `defaultHeistState'

Я знаю, что подпись типа для loadTemplates изменилась на

loadTemplates :: FilePath -> EitherT [String] IO TemplateRepoSource

Но мне трудно понять, как адаптировать мой старый код, чтобы он работал.

1 ответ

Решение

Хорошо, я заставил это работать с этим, но я открыт для более изящных способов сделать это

load baseDir splices = do
    tmap <- runEitherT  $ do
        templates <- loadTemplates baseDir
        let hc = HeistConfig mySplices  [] [] [] templates
        initHeist hc
    either (error . concat) return tmap

main = do
      ts <- load "templates" $ bindSplices mySplices 
      renderWithArgs [("test", T.pack "hello world")]  ts "index" >>= 
        B.putStr . maybe "Page not found" (toByteString . fst) 
Другие вопросы по тегам