Templates: strip directory before trying to find partial in data files.

Closes #5987.
This commit is contained in:
John MacFarlane 2019-12-17 11:10:16 -08:00
parent 20cf4e47b0
commit 01b89d87f4

View file

@ -25,7 +25,7 @@ module Text.Pandoc.Templates ( Template
) where ) where
import Prelude import Prelude
import System.FilePath ((<.>), (</>)) import System.FilePath ((<.>), (</>), takeFileName)
import Text.DocTemplates (Template, TemplateMonad(..), compileTemplate, renderTemplate) import Text.DocTemplates (Template, TemplateMonad(..), compileTemplate, renderTemplate)
import Text.Pandoc.Class (PandocMonad, readDataFile, fetchItem, import Text.Pandoc.Class (PandocMonad, readDataFile, fetchItem,
CommonState(..), getCommonState, modifyCommonState) CommonState(..), getCommonState, modifyCommonState)
@ -48,7 +48,7 @@ newtype WithPartials m a = WithPartials { runWithPartials :: m a }
instance PandocMonad m => TemplateMonad (WithDefaultPartials m) where instance PandocMonad m => TemplateMonad (WithDefaultPartials m) where
getPartial fp = WithDefaultPartials $ getPartial fp = WithDefaultPartials $
UTF8.toText <$> readDataFile fp UTF8.toText <$> readDataFile ("templates" </> takeFileName fp)
instance PandocMonad m => TemplateMonad (WithPartials m) where instance PandocMonad m => TemplateMonad (WithPartials m) where
getPartial fp = WithPartials $ getTemplate fp getPartial fp = WithPartials $ getTemplate fp
@ -68,7 +68,8 @@ getTemplate tp = UTF8.toText <$>
`catchError` `catchError`
(\e -> case e of (\e -> case e of
PandocResourceNotFound _ -> PandocResourceNotFound _ ->
readDataFile ("templates" </> tp) -- see #5987 on reason for takeFileName
readDataFile ("templates" </> takeFileName tp)
_ -> throwError e)) _ -> throwError e))
-- | Get default template for the specified writer. -- | Get default template for the specified writer.