packages feed

lio-simple-0.0.0.3: template/Common_hs.tmpl

{-# LANGUAGE Trustworthy #-}$if(include_templates)$
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
$endif$
module $module$.Common where

import Prelude hiding (readFile, writeFile, appendFile, catch)
import LIO
import LIO.DCLabel
$if(include_templates)$
import LIO.Web.Simple
import LIO.Web.Simple.DCLabel
import Web.Simple.Templates
import Control.Applicative
import System.FilePath
$if(include_fs)$
import LIO.FS.Simple
import Data.Text.Encoding
import Web.Simple.Templates.Language
$else$
import LIO.Web.Simple.TCB (lioGetTemplateTCB)
$endif$
$endif$

data AppSettings = AppSettings { }

newAppSettings :: DC AppSettings
newAppSettings = do
  return AppSettings

$if(include_templates)$
instance HasTemplates DC AppSettings where$if(include_fs)$
  viewDirectory = return $$ "views"
  defaultLayout = Just <$$> getTemplate ("layouts" </> "main.html")
  getTemplate fp = do
    eres <- compileTemplate . decodeUtf8 <$$> liftLIO (liftLIO $$ readFile fp)
    case eres of
      Left str -> fail str
      Right tmpl -> return tmpl$else$
  viewDirectory = return $$ "liofs" </> "views"
  defaultLayout = Just <$$> getTemplate ("liofs" </> "layouts" </> "main.html")
  getTemplate = liftLIO . lioGetTemplateTCB
  -- NOTE: We assume that "liofs" only contains public data, DO NOT
  -- store any sensitive data in this directory
$endif$
$endif$