{- | A module exporting only functions for using compiled templates. If you - import the main Snap.Snaplet.Heist module, it's easy to accidentally use - the interpreted render function even when you're using compiled Heist. - Importing only this module will make it harder to make mistakes like that. -} module Snap.Snaplet.Heist.Compiled ( H.Heist , H.HasHeist(..) , H.SnapletHeist , H.SnapletCSplice -- * Initializer Functions -- $initializerSection , H.heistInit , H.heistInit' , H.addTemplates , H.addTemplatesAt , H.addConfig , H.modifyHeistState , H.withHeistState -- * Handler Functions -- $handlerSection , render , renderAs , heistServe , heistServeSingle , H.clearHeistCache ) where import Data.ByteString (ByteString) import Snap.Snaplet import qualified Snap.Snaplet.Heist as H ------------------------------------------------------------------------------ -- | Renders a compiled template as text\/html. If the given template is not -- found, this returns 'empty'. render :: H.HasHeist b => ByteString -- ^ Template name -> Handler b v () render = H.cRender ------------------------------------------------------------------------------ -- | Renders a compiled template as the given content type. If the given -- template is not found, this returns 'empty'. renderAs :: H.HasHeist b => ByteString -- ^ Content type to render with -> ByteString -- ^ Template name -> Handler b v () renderAs = H.cRenderAs ------------------------------------------------------------------------------ -- | A handler that serves all the templates (similar to 'serveDirectory'). -- If the template specified in the request path is not found, it returns -- 'empty'. Also, this function does not serve any templates beginning with -- an underscore. This gives you a way to prevent some templates from being -- served. For example, you might have a template that contains only the -- navbar of your pages, and you probably wouldn't want that template to be -- visible to the user as a standalone template. So if you put it in a file -- called \"_nav.tpl\", this function won't serve it. heistServe :: H.HasHeist b => Handler b v () heistServe = H.cHeistServe ------------------------------------------------------------------------------ -- | Handler for serving a single template (similar to 'fileServeSingle'). If -- the given template is not found, this throws an error. heistServeSingle :: H.HasHeist b => ByteString -- ^ Template name -> Handler b v () heistServeSingle = H.cHeistServeSingle