module Web.Routes.Nested.FileExtListener.Cassius where
import Web.Routes.Nested.FileExtListener.Types as FE
import Web.Routes.Nested.FileExtListener.ByteString
import Data.Map
import Text.Cassius
import qualified Data.Text.Lazy as LT
import qualified Data.Text.Lazy.Encoding as LT
import Network.HTTP.Types (RequestHeaders,
Status, status200)
import Network.Wai
import Control.Monad.Writer
cassius :: Monad m => Css -> FileExtListenerT Response m ()
cassius = cassiusStatusHeaders status200 [("Content-Type", "cassius/css")]
cassiusStatus :: Monad m => Status -> Css -> FileExtListenerT Response m ()
cassiusStatus s = cassiusStatusHeaders s [("Content-Type", "cassius/css")]
cassiusHeaders :: Monad m => RequestHeaders -> Css -> FileExtListenerT Response m ()
cassiusHeaders = cassiusStatusHeaders status200
cassiusStatusHeaders :: Monad m => Status -> RequestHeaders -> Css -> FileExtListenerT Response m ()
cassiusStatusHeaders s hs i =
let r = cassiusOnlyStatusHeaders s hs i in
FileExtListenerT $ tell $
FileExts $ singleton Css r
cassiusOnly :: Css -> Response
cassiusOnly = cassiusOnlyStatusHeaders status200 [("Content-Type", "cassius/css")]
cassiusOnlyStatus :: Status -> Css -> Response
cassiusOnlyStatus s = cassiusOnlyStatusHeaders s [("Content-Type", "cassius/css")]
cassiusOnlyHeaders :: RequestHeaders -> Css -> Response
cassiusOnlyHeaders = cassiusOnlyStatusHeaders status200
cassiusOnlyStatusHeaders :: Status -> RequestHeaders -> Css -> Response
cassiusOnlyStatusHeaders s hs i = bytestringOnlyStatus s hs $ LT.encodeUtf8 $ renderCss i