packages feed

salvia-0.0.4: src/Network/Salvia/Advanced/CleverCSS.hs

module Network.Salvia.Advanced.CleverCSS (
    hFilterCSS
  , hCleverCSS
  , hParametrizedCleverCSS
  ) where

import Text.CSS.CleverCSS (cleverCSSConvert)

import Network.Salvia.Handlers.ExtensionDispatcher (hExtension)
import Network.Salvia.Handlers.File (hFile, hFileFilter)
import Network.Salvia.Handlers.Rewrite (hRewriteExt)
import Network.Salvia.Handlers.PathRouter (hParameters)
import Network.Salvia.Handlers.Fallback (hOr)
import Network.Protocol.Uri (Parameters)
import Network.Salvia.Httpd (Handler)

hFilterCSS :: Handler () -> Handler () -> Handler ()
hFilterCSS cssfilter handler = do
  hExtension (Just "css")
    (hFile `hOr` cssfilter)
    handler

hCleverCSS :: Handler ()
hCleverCSS = do
  params <- hParameters
  hParametrizedCleverCSS params

hParametrizedCleverCSS :: Parameters -> Handler ()
hParametrizedCleverCSS p = do
  hRewriteExt ('c':) (hFileFilter convert)
  where convert = either id id . flip (cleverCSSConvert "") (map (fmap $ maybe "" id) p)