salvia-0.0.5: src/Network/Salvia/Advanced/CleverCSS.hs
module Network.Salvia.Advanced.CleverCSS (
hFilterCSS
, hCleverCSS
, hParametrizedCleverCSS
) where
import Network.Protocol.Uri (Parameters)
import Network.Salvia.Handlers.ExtensionDispatcher (hExtension)
import Network.Salvia.Handlers.Fallback (hOr)
import Network.Salvia.Handlers.File (hFile, hFileFilter)
import Network.Salvia.Handlers.PathRouter (hParameters)
import Network.Salvia.Handlers.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)