module Network.Salvia.Advanced.HsColour ( hHighlightHaskell , hHsColour , hHsColourCustomStyle , defaultStyleSheet ) where import Data.Record.Label import Language.Haskell.HsColour.CSS import Network.Protocol.Http (contentType, utf8) import Network.Salvia.Handlers.ExtensionDispatcher import Network.Salvia.Handlers.File import Network.Salvia.Httpd hHighlightHaskell :: Handler () -> Handler () -> Handler () hHighlightHaskell highlighter = hExtensionRouter [ (Just "hs", highlighter) , (Just "lhs", highlighter) , (Just "ag", highlighter) ] hHsColour :: ResourceHandler () hHsColour = hHsColourCustomStyle (Left defaultStyleSheet) -- Left means direct inclusion of stylesheet, right means link to external -- stylesheet. hHsColourCustomStyle :: Either String String -> ResourceHandler () hHsColourCustomStyle style r = do sendStr (either id makeStyleLink style) hFileResourceFilter (hscolour False True "") r setM (contentType % response) ("text/html", Just utf8) makeStyleLink :: String -> String makeStyleLink css = "" defaultStyleSheet :: String defaultStyleSheet = filter (/=' ') $ concat [ "" , "" ]