salvia-extras-0.1: src/Network/Salvia/Handler/CleverCSS.hs
module Network.Salvia.Handler.CleverCSS (
hFilterCSS
, hCleverCSS
, hParametrizedCleverCSS
) where
import Network.Protocol.Uri (Parameters)
import Network.Salvia.Handler.ExtensionDispatcher (hExtension)
import Network.Salvia.Handler.Fallback (hOr)
import Network.Salvia.Handler.File (hFile, hFileFilter)
import Network.Salvia.Handler.PathRouter (hParameters)
import Network.Salvia.Handler.Rewrite (hRewriteExt)
import Network.Salvia.Httpd (Handler)
import Text.CSS.CleverCSS (cleverCSSConvert)
hFilterCSS :: Handler () -> Handler () -> Handler ()
hFilterCSS cssfilter handler = do
hExtension (Just "css")
(hFile `hOr` cssfilter)
handler
hCleverCSS :: Handler ()
hCleverCSS = hParameters >>= hParametrizedCleverCSS
hParametrizedCleverCSS :: Parameters -> Handler ()
hParametrizedCleverCSS p = do
hRewriteExt (fmap ('c':)) (hFileFilter convert)
where convert = either id id . flip (cleverCSSConvert "") (map (fmap $ maybe "" id) p)