如何使用loadTemplates为新的Heist API更新代码?

时间:2013-02-10 00:29:54

标签: haskell heist

此代码在0.10.0更改之前使用Heist

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 个答案:

答案 0 :(得分: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)