module Network.Salvia.Handler.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
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 [
""
, ""
]