{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}
module Text.Pandoc.Templates ( Template
, compileTemplate
, renderTemplate
, getDefaultTemplate
) where
import Prelude
import System.FilePath ((<.>), (</>))
import Text.DocTemplates (Template, compileTemplate, renderTemplate)
import Text.Pandoc.Class (PandocMonad, readDataFile)
import qualified Text.Pandoc.UTF8 as UTF8
import Data.Text (Text)
import qualified Data.Text as T
getDefaultTemplate :: PandocMonad m
=> Text
-> m Text
getDefaultTemplate :: Text -> m Text
getDefaultTemplate writer :: Text
writer = do
let format :: Text
format = (Char -> Bool) -> Text -> Text
T.takeWhile (Char -> [Char] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` ("+-" :: String)) Text
writer
case Text
format of
"native" -> Text -> m Text
forall (m :: * -> *) a. Monad m => a -> m a
return ""
"json" -> Text -> m Text
forall (m :: * -> *) a. Monad m => a -> m a
return ""
"docx" -> Text -> m Text
forall (m :: * -> *) a. Monad m => a -> m a
return ""
"fb2" -> Text -> m Text
forall (m :: * -> *) a. Monad m => a -> m a
return ""
"pptx" -> Text -> m Text
forall (m :: * -> *) a. Monad m => a -> m a
return ""
"ipynb" -> Text -> m Text
forall (m :: * -> *) a. Monad m => a -> m a
return ""
"odt" -> Text -> m Text
forall (m :: * -> *). PandocMonad m => Text -> m Text
getDefaultTemplate "opendocument"
"html" -> Text -> m Text
forall (m :: * -> *). PandocMonad m => Text -> m Text
getDefaultTemplate "html5"
"docbook" -> Text -> m Text
forall (m :: * -> *). PandocMonad m => Text -> m Text
getDefaultTemplate "docbook5"
"epub" -> Text -> m Text
forall (m :: * -> *). PandocMonad m => Text -> m Text
getDefaultTemplate "epub3"
"beamer" -> Text -> m Text
forall (m :: * -> *). PandocMonad m => Text -> m Text
getDefaultTemplate "latex"
"markdown_strict" -> Text -> m Text
forall (m :: * -> *). PandocMonad m => Text -> m Text
getDefaultTemplate "markdown"
"multimarkdown" -> Text -> m Text
forall (m :: * -> *). PandocMonad m => Text -> m Text
getDefaultTemplate "markdown"
"markdown_github" -> Text -> m Text
forall (m :: * -> *). PandocMonad m => Text -> m Text
getDefaultTemplate "markdown"
"markdown_mmd" -> Text -> m Text
forall (m :: * -> *). PandocMonad m => Text -> m Text
getDefaultTemplate "markdown"
"markdown_phpextra" -> Text -> m Text
forall (m :: * -> *). PandocMonad m => Text -> m Text
getDefaultTemplate "markdown"
"gfm" -> Text -> m Text
forall (m :: * -> *). PandocMonad m => Text -> m Text
getDefaultTemplate "commonmark"
_ -> do
let fname :: [Char]
fname = "templates" [Char] -> [Char] -> [Char]
</> "default" [Char] -> [Char] -> [Char]
<.> Text -> [Char]
T.unpack Text
format
ByteString -> Text
UTF8.toText (ByteString -> Text) -> m ByteString -> m Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> m ByteString
forall (m :: * -> *). PandocMonad m => [Char] -> m ByteString
readDataFile [Char]
fname