{-# LANGUAGE CPP #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-| HTML is a Servant combinator for the "text/html" MIME type, equipped with instances for serving Shpadoinkle's 'Html' type. -} module Shpadoinkle.Router.HTML (HTML) where #ifndef ghcjs_HOST_OS import qualified Data.ByteString.Lazy as BSL import qualified Data.List.NonEmpty as NE import Data.Text.Encoding import qualified Network.HTTP.Media as M import Servant.API (Accept (..), MimeRender (..)) import Shpadoinkle import Shpadoinkle.Backend.Static (renderStatic) data HTML instance Accept HTML where contentTypes _ = "text" M.// "html" M./: ("charset", "utf-8") NE.:| ["text" M.// "html"] instance MimeRender HTML (Html m a) where mimeRender _ = BSL.fromStrict . encodeUtf8 . renderStatic #else data HTML #endif