aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MANUAL.txt18
-rw-r--r--src/Text/Pandoc/App/OutputSettings.hs18
2 files changed, 20 insertions, 16 deletions
diff --git a/MANUAL.txt b/MANUAL.txt
index 14ea6e216..c6770da04 100644
--- a/MANUAL.txt
+++ b/MANUAL.txt
@@ -761,14 +761,16 @@ header when requesting a document from a URL:
`--template=`*FILE*|*URL*
: Use the specified file as a custom template for the generated document.
- Implies `--standalone`. See [Templates], below, for a description
- of template syntax. If no extension is specified, an extension
- corresponding to the writer will be added, so that `--template=special`
- looks for `special.html` for HTML output. If the template is not
- found, pandoc will search for it in the `templates` subdirectory of
- the user data directory (see `--data-dir`). If this option is not used,
- a default template appropriate for the output format will be used (see
- `-D/--print-default-template`).
+ Implies `--standalone`. See [Templates], below, for a
+ description of template syntax. If the template is not found,
+ pandoc will search for it in the `templates` subdirectory of
+ the user data directory (see `--data-dir`). If no extension
+ is specified and an extensionless template is not found,
+ pandoc will look for a template with an extension
+ corresponding to the writer, so that `--template=special`
+ looks for `special.html` for HTML output. If this option is
+ not used, a default template appropriate for the output
+ format will be used (see `-D/--print-default-template`).
`-V` *KEY*[`=`*VAL*], `--variable=`*KEY*[`:`*VAL*]
diff --git a/src/Text/Pandoc/App/OutputSettings.hs b/src/Text/Pandoc/App/OutputSettings.hs
index f8c27bee4..38cd35455 100644
--- a/src/Text/Pandoc/App/OutputSettings.hs
+++ b/src/Text/Pandoc/App/OutputSettings.hs
@@ -25,7 +25,7 @@ import qualified Data.Text as T
import Text.DocTemplates (toVal, Context(..), Val(..))
import qualified Control.Exception as E
import Control.Monad
-import Control.Monad.Except (throwError)
+import Control.Monad.Except (throwError, catchError)
import Control.Monad.Trans
import Data.Char (toLower)
import Data.List (find)
@@ -111,13 +111,15 @@ optToOutputSettings scriptingEngine opts = do
_ | not standalone -> return Nothing
Nothing -> Just <$> getDefault
Just tp -> do
- -- strip off extensions
- let tp' = case takeExtension tp of
- "" -> tp <.> T.unpack format
- _ -> tp
- getTemplate tp'
- >>= runWithPartials . compileTemplate tp'
- >>= fmap Just . templateOrThrow
+ let getAndCompile fp =
+ getTemplate fp >>= runWithPartials . compileTemplate fp >>=
+ fmap Just . templateOrThrow
+ catchError
+ (getAndCompile tp)
+ (\e ->
+ if null (takeExtension tp)
+ then getAndCompile (tp <.> T.unpack format)
+ else throwError e)
(writer, writerExts, mtemplate) <-
if "lua" `T.isSuffixOf` format