module Network.Wai.Middleware.ContentType.Pandoc where
import Network.Wai.Middleware.ContentType.Types
import Network.Wai.Middleware.ContentType.ByteString
import Network.HTTP.Types (RequestHeaders, Status, status200)
import Network.Wai.Trans
import qualified Data.Text.Lazy as LT
import qualified Data.Text.Lazy.Encoding as LT
import qualified Text.Pandoc as P
import Control.Monad.Trans
lucid :: MonadIO m => P.Pandoc -> FileExtListenerT (MiddlewareT m) m ()
lucid = lucidStatusHeaders status200 [("Content-Type", "text/markdown")]
lucidWith :: MonadIO m =>
(Response -> Response) -> P.Pandoc
-> FileExtListenerT (MiddlewareT m) m ()
lucidWith f = lucidStatusHeadersWith f status200 [("Content-Type", "text/markdown")]
lucidStatus :: MonadIO m =>
Status -> P.Pandoc
-> FileExtListenerT (MiddlewareT m) m ()
lucidStatus s = lucidStatusHeaders s [("Content-Type", "text/markdown")]
lucidStatusWith :: MonadIO m =>
(Response -> Response) -> Status -> P.Pandoc
-> FileExtListenerT (MiddlewareT m) m ()
lucidStatusWith f s = lucidStatusHeadersWith f s [("Content-Type", "text/markdown")]
lucidHeaders :: MonadIO m =>
RequestHeaders -> P.Pandoc
-> FileExtListenerT (MiddlewareT m) m ()
lucidHeaders = lucidStatusHeaders status200
lucidHeadersWith :: MonadIO m =>
(Response -> Response) -> RequestHeaders -> P.Pandoc
-> FileExtListenerT (MiddlewareT m) m ()
lucidHeadersWith f = lucidStatusHeadersWith f status200
lucidStatusHeaders :: MonadIO m =>
Status -> RequestHeaders -> P.Pandoc
-> FileExtListenerT (MiddlewareT m) m ()
lucidStatusHeaders = lucidStatusHeadersWith id
lucidStatusHeadersWith :: MonadIO m =>
(Response -> Response) -> Status -> RequestHeaders -> P.Pandoc
-> FileExtListenerT (MiddlewareT m) m ()
lucidStatusHeadersWith f s hs i = do
bytestringStatusWith f Html s hs . LT.encodeUtf8 . LT.pack $ P.writeMarkdown P.def i
lucidOnly :: P.Pandoc -> Response
lucidOnly = lucidOnlyStatusHeaders status200 [("Content-Type", "text/markdown")]
lucidOnlyStatus :: Status -> P.Pandoc -> Response
lucidOnlyStatus s = lucidOnlyStatusHeaders s [("Content-Type", "text/markdown")]
lucidOnlyHeaders :: RequestHeaders -> P.Pandoc -> Response
lucidOnlyHeaders = lucidOnlyStatusHeaders status200
lucidOnlyStatusHeaders :: Status -> RequestHeaders -> P.Pandoc -> Response
lucidOnlyStatusHeaders s hs i = bytestringOnlyStatus s hs . LT.encodeUtf8 . LT.pack $ P.writeMarkdown P.def i