Skip to content

Commit

Permalink
PDF: allow custom writer as format if engine is explicitly specified (#…
Browse files Browse the repository at this point in the history
…7901)

Closes #7898.
Note that it may be necessary to explicitly specify a template on the command line.
  • Loading branch information
tarleb authored Feb 9, 2022
1 parent 63deba4 commit 7dc59aa
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/Text/Pandoc/App/OutputSettings.hs
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,10 @@ pdfWriterAndProg mWriter mEngine =
go Nothing Nothing = Right ("latex", "pdflatex")
go (Just writer) Nothing = (writer,) <$> engineForWriter writer
go Nothing (Just engine) = (,engine) <$> writerForEngine (takeBaseName engine)
go (Just writer) (Just engine) | isCustomWriter writer =
-- custom writers can produce any format, so assume the user knows
-- what they are doing.
Right (writer, engine)
go (Just writer) (Just engine) =
case find (== (baseWriterName writer, takeBaseName engine)) engines of
Just _ -> Right (writer, engine)
Expand All @@ -266,11 +270,13 @@ pdfWriterAndProg mWriter mEngine =
"pdf-engine " <> T.pack eng <> " not known"

engineForWriter "pdf" = Left "pdf writer"
engineForWriter w = case [e | (f,e) <- engines, f == baseWriterName w] of
engineForWriter w = case [e | (f,e) <- engines, f == baseWriterName w] of
eng : _ -> Right eng
[] -> Left $
"cannot produce pdf output from " <> w

isCustomWriter w = ".lua" `T.isSuffixOf` w

isTextFormat :: T.Text -> Bool
isTextFormat s =
s `notElem` ["odt","docx","epub2","epub3","epub","pptx","pdf"]

0 comments on commit 7dc59aa

Please sign in to comment.