packages feed

scotty-view-1.0.0: ScottyView.hs

module ScottyView (getView, getViewFromFile) where

import Web.Scotty (ActionM, liftAndCatchIO, html)
import Data.Text.Lazy (pack)

import HtmlPage (emptyPage, fromFile)
import HtmlPageBuilder (HtmlPageBuilder, run)


------------------------------------------------------------------------------
--                            Library functions                             --
------------------------------------------------------------------------------

-- | Returns a view (ActionM) from a given HtmlPageBuilder.
getView :: HtmlPageBuilder IO () -> ActionM ()
getView builder = do
  page <- liftAndCatchIO $ run builder emptyPage
  html $ pack (show page)

-- | Returns a view (ActionM) from a given file path and HtmlPageBuilder.
getViewFromFile :: String -> HtmlPageBuilder IO () -> ActionM ()
getViewFromFile filePath builder = do
  page <- liftAndCatchIO $ fromFile filePath
  newPage <- liftAndCatchIO $ run builder page
  html $ pack (show newPage)