aboutsummaryrefslogtreecommitdiff
path: root/pandoc.hs
diff options
context:
space:
mode:
Diffstat (limited to 'pandoc.hs')
-rw-r--r--pandoc.hs36
1 files changed, 17 insertions, 19 deletions
diff --git a/pandoc.hs b/pandoc.hs
index a4906382a..01f8891d8 100644
--- a/pandoc.hs
+++ b/pandoc.hs
@@ -110,8 +110,7 @@ wrapWords indent c = wrap' (c - indent) (c - indent)
wrap' cols (remaining - length x - 2) xs
isTextFormat :: String -> Bool
-isTextFormat s = takeWhile (`notElem` "+-") s `notElem` binaries
- where binaries = ["odt","docx","epub","epub3"]
+isTextFormat s = s `notElem` ["odt","docx","epub","epub3"]
externalFilter :: FilePath -> [String] -> Pandoc -> IO Pandoc
externalFilter f args' d = do
@@ -1162,23 +1161,24 @@ convertWithOpts opts args = do
"epub2" -> "epub"
"html4" -> "html"
x -> x
+ let format = takeWhile (`notElem` ['+','-'])
+ $ takeFileName writerName' -- in case path to lua script
let pdfOutput = map toLower (takeExtension outputFile) == ".pdf"
- let laTeXOutput = "latex" `isPrefixOf` writerName' ||
- "beamer" `isPrefixOf` writerName'
- let conTeXtOutput = "context" `isPrefixOf` writerName'
- let html5Output = "html5" `isPrefixOf` writerName'
+ let laTeXOutput = format `elem` ["latex", "beamer"]
+ let conTeXtOutput = format == "context"
+ let html5Output = format == "html5"
let laTeXInput = "latex" `isPrefixOf` readerName' ||
"beamer" `isPrefixOf` readerName'
- writer <- if ".lua" `isSuffixOf` writerName'
+ writer <- if ".lua" `isSuffixOf` format
-- note: use non-lowercased version writerName
then return $ IOStringWriter $ writeCustom writerName
else case getWriter writerName' of
Left e -> err 9 $
- if writerName' == "pdf"
+ if format == "pdf"
then e ++
"\nTo create a pdf with pandoc, use " ++
"the latex or beamer writer and specify\n" ++
@@ -1201,18 +1201,17 @@ convertWithOpts opts args = do
"\nPandoc can convert from DOCX, but not from DOC.\nTry using Word to save your DOC file as DOCX, and convert that with pandoc."
_ -> e
- let standalone' = standalone || not (isTextFormat writerName') || pdfOutput
+ let standalone' = standalone || not (isTextFormat format) || pdfOutput
templ <- case templatePath of
_ | not standalone' -> return ""
Nothing -> do
- deftemp <- getDefaultTemplate datadir writerName'
+ deftemp <- getDefaultTemplate datadir format
case deftemp of
Left e -> throwIO e
Right t -> return t
Just tp -> do
-- strip off extensions
- let format = takeWhile (`notElem` "+-") writerName'
let tp' = case takeExtension tp of
"" -> tp <.> format
_ -> tp
@@ -1234,7 +1233,7 @@ convertWithOpts opts args = do
return $ ("mathml-script", s) : variables
_ -> return variables
- variables'' <- if "dzslides" `isPrefixOf` writerName'
+ variables'' <- if format == "dzslides"
then do
dztempl <- readDataFileUTF8 datadir
("dzslides" </> "template.html")
@@ -1270,8 +1269,8 @@ convertWithOpts opts args = do
, readerTrackChanges = trackChanges
}
- when (not (isTextFormat writerName') && outputFile == "-") $
- err 5 $ "Cannot write " ++ writerName' ++ " output to stdout.\n" ++
+ when (not (isTextFormat format) && outputFile == "-") $
+ err 5 $ "Cannot write " ++ format ++ " output to stdout.\n" ++
"Specify an output file using the -o option."
let readSources [] = mapM readSource ["-"]
@@ -1354,7 +1353,7 @@ convertWithOpts opts args = do
doc' <- (maybe return (extractMedia media) mbExtractMedia >=>
adjustMetadata metadata >=>
applyTransforms transforms >=>
- applyFilters filters' [writerName']) doc
+ applyFilters filters' [format]) doc
let writeBinary :: B.ByteString -> IO ()
writeBinary = B.writeFile (UTF8.encodePath outputFile)
@@ -1370,7 +1369,7 @@ convertWithOpts opts args = do
| pdfOutput -> do
-- make sure writer is latex or beamer or context or html5
unless (laTeXOutput || conTeXtOutput || html5Output) $
- err 47 $ "cannot produce pdf output with " ++ writerName' ++
+ err 47 $ "cannot produce pdf output with " ++ format ++
" writer"
let pdfprog = case () of
@@ -1393,9 +1392,8 @@ convertWithOpts opts args = do
| otherwise -> selfcontain (f writerOptions doc' ++
['\n' | not standalone'])
>>= writerFn outputFile . handleEntities
- where htmlFormat = writerName' `elem`
- ["html","html+lhs","html5","html5+lhs",
- "s5","slidy","slideous","dzslides","revealjs"]
+ where htmlFormat = format `elem`
+ ["html","html5","s5","slidy","slideous","dzslides","revealjs"]
selfcontain = if selfContained && htmlFormat
then makeSelfContained writerOptions
else return