@@ -38,28 +38,28 @@ module Text.Pandoc.Templates ( module Text.DocTemplates
3838 , getDefaultTemplate
3939 ) where
4040
41−import qualified Control.Exception as E (IOException, try)
4241import Control.Monad.Except (throwError)
4342import Data.Aeson (ToJSON (..))
4443import qualified Data.Text as T
4544import System.FilePath ((<.>), (</>))
4645import Text.DocTemplates (Template, TemplateTarget, applyTemplate,
4746 compileTemplate, renderTemplate, varListToJSON)
48−import Text.Pandoc.Class (PandocMonad)
47+import Text.Pandoc.Class (PandocMonad(readDataFile))
4948import Text.Pandoc.Error
50−import Text.Pandoc.Shared (readDataFileUTF8)
49+import qualified Text.Pandoc.UTF8 as UTF8
5150
5251-- | Get default template for the specified writer.
53−getDefaultTemplate :: (Maybe FilePath) -- ^ User data directory to search first
52+getDefaultTemplate :: PandocMonad m
53+ => (Maybe FilePath) -- ^ User data directory to search 1st
5454 -> String -- ^ Name of writer
55− -> IO (Either E.IOException String)
55+ -> m String
5656getDefaultTemplate user writer = do
5757 let format = takeWhile (`notElem` ("+-" :: String)) writer -- strip off extensions
5858 case format of
59− "native" -> return $ Right ""
60− "json" -> return $ Right ""
61− "docx" -> return $ Right ""
62− "fb2" -> return $ Right ""
59+ "native" -> return ""
60+ "json" -> return ""
61+ "docx" -> return ""
62+ "fb2" -> return ""
6363 "odt" -> getDefaultTemplate user "opendocument"
6464 "html" -> getDefaultTemplate user "html5"
6565 "docbook" -> getDefaultTemplate user "docbook5"
@@ -70,7 +70,7 @@ getDefaultTemplate user writer = do
7070 "markdown_mmd" -> getDefaultTemplate user "markdown"
7171 "markdown_phpextra" -> getDefaultTemplate user "markdown"
7272 _ -> let fname = "templates" </> "default" <.> format
73− in E.try $ readDataFileUTF8 user fname
73+ in UTF8.toString <$> readDataFile user fname
7474
7575-- | Like 'applyTemplate', but runs in PandocMonad and
7676-- raises an error if compilation fails.