git.iko.soy/typeable/pandoc
on master help sign in
Change optInputFiles to a `Maybe [FilePath]`.

`Nothing` means: nothing specified. `Just []` means: an empty list specified (e.g. in defaults). Potentially these could lead to different behavior: see #5888.

commit81fae63a5429266fd04c25a8da8fa442eee8c788 authorJohn MacFarlane <jgm@berkeley.edu> dateThu 14 Nov 2019, 18:42 (7 years ago) parent871bfaf
5 files changed+22−16
src/Text/Pandoc/App.hs+6−6 src/Text/Pandoc/App/CommandLineOptions.hs+5−1 src/Text/Pandoc/App/Opt.hs+7−6 src/Text/Pandoc/App/OutputSettings.hs+3−2 test/command/lua-pandoc-state.md+1−1
src/Text/Pandoc/App.hs+6−6
@@ -75,7 +75,7 @@ convertWithOpts opts = do
7575
7676 when (optDumpArgs opts) $
7777 do UTF8.hPutStrLn stdout outputFile
78− mapM_ (UTF8.hPutStrLn stdout) (optInputFiles opts)
78+ mapM_ (UTF8.hPutStrLn stdout) (fromMaybe ["-"] $ optInputFiles opts)
7979 exitSuccess
8080
8181 let isPandocCiteproc (JSONFilter f) = takeBaseName f == "pandoc-citeproc"
@@ -88,9 +88,9 @@ convertWithOpts opts = do
8888 let filters' = filters ++ [ JSONFilter "pandoc-citeproc" | needsCiteproc ]
8989
9090 let sources = case optInputFiles opts of
91− [] -> ["-"]
92− xs | optIgnoreArgs opts -> ["-"]
93− | otherwise -> xs
91+ Nothing -> ["-"]
92+ Just xs | optIgnoreArgs opts -> ["-"]
93+ | otherwise -> xs
9494
9595 datadir <- case optDataDir opts of
9696 Nothing -> do
@@ -132,7 +132,7 @@ convertWithOpts opts = do
132132
133133 runIO' $ do
134134 setUserDataDir datadir
135− setInputFiles (optInputFiles opts)
135+ setInputFiles (fromMaybe ["-"] (optInputFiles opts))
136136 setOutputFile (optOutputFile opts)
137137
138138 -- assign reader and writer based on options and filenames
@@ -151,7 +151,7 @@ convertWithOpts opts = do
151151
152152 when (pdfOutput && readerName == "latex") $
153153 case (optInputFiles opts) of
154− (inputFile:_) -> report $ UnusualConversion $ T.pack $
154+ Just (inputFile:_) -> report $ UnusualConversion $ T.pack $
155155 "to convert a .tex file to PDF, you get better results by using pdflatex "
156156 <> "(or lualatex or xelatex) directly, try `pdflatex " <> inputFile
157157 <> "` instead of `pandoc " <> inputFile <> " -o " <> outputFile <> "`."
src/Text/Pandoc/App/CommandLineOptions.hs+5−1
@@ -85,7 +85,11 @@ parseOptions options' defaults = do
8585
8686 -- thread option data structure through all supplied option actions
8787 opts <- foldl (>>=) (return defaults) actions
88− return (opts{ optInputFiles = map normalizePath $ optInputFiles opts ++ args })
88+ let mbArgs = case args of
89+ [] -> Nothing
90+ xs -> Just xs
91+ return $ opts{ optInputFiles =
92+ map normalizePath <$> (optInputFiles opts <> mbArgs) }
8993
9094latexEngines :: [String]
9195latexEngines = ["pdflatex", "lualatex", "xelatex", "latexmk", "tectonic"]
src/Text/Pandoc/App/Opt.hs+7−6
@@ -85,7 +85,7 @@ data Opt = Opt
8585 , optMetadata :: Meta -- ^ Metadata fields to set
8686 , optMetadataFiles :: [FilePath] -- ^ Name of YAML metadata files
8787 , optOutputFile :: Maybe FilePath -- ^ Name of output file
88− , optInputFiles :: [FilePath] -- ^ Names of input files
88+ , optInputFiles :: Maybe [FilePath] -- ^ Names of input files
8989 , optNumberSections :: Bool -- ^ Number sections in LaTeX
9090 , optNumberOffset :: [Int] -- ^ Starting number for sections
9191 , optSectionDivs :: Bool -- ^ Put sections in div tags in HTML
@@ -200,16 +200,17 @@ doOpt (k',v) = do
200200 "output-file" ->
201201 parseYAML v >>= \x -> return (\o -> o{ optOutputFile = unpack <$> x })
202202 "input-files" ->
203− parseYAML v >>= \x -> return (\o -> o{ optInputFiles = optInputFiles o <>
204− map unpack x })
203+ parseYAML v >>= \x -> return (\o -> o{ optInputFiles =
204+ optInputFiles o <>
205+ Just (map unpack x) })
205206 "input-file" -> -- allow either a list or a single value
206207 (parseYAML v >>= \x -> return (\o -> o{ optInputFiles =
207208 optInputFiles o <>
208− map unpack x }))
209+ Just (map unpack x) }))
209210 <|>
210211 (parseYAML v >>= \x -> return (\o -> o{ optInputFiles =
211212 optInputFiles o <>
212− [unpack x] }))
213+ Just [unpack x] }))
213214 "number-sections" ->
214215 parseYAML v >>= \x -> return (\o -> o{ optNumberSections = x })
215216 "number-offset" ->
@@ -390,7 +391,7 @@ defaultOpts = Opt
390391 , optMetadata = mempty
391392 , optMetadataFiles = []
392393 , optOutputFile = Nothing
393− , optInputFiles = []
394+ , optInputFiles = Nothing
394395 , optNumberSections = False
395396 , optNumberOffset = [0,0,0,0,0,0]
396397 , optSectionDivs = False
src/Text/Pandoc/App/OutputSettings.hs+3−2
@@ -63,7 +63,7 @@ optToOutputSettings opts = do
6363
6464 when (optDumpArgs opts) . liftIO $ do
6565 UTF8.hPutStrLn stdout outputFile
66− mapM_ (UTF8.hPutStrLn stdout) (optInputFiles opts)
66+ mapM_ (UTF8.hPutStrLn stdout) (fromMaybe [] $ optInputFiles opts)
6767 exitSuccess
6868
6969 epubMetadata <- case optEpubMetadata opts of
@@ -140,7 +140,8 @@ optToOutputSettings opts = do
140140 variables <-
141141 return (optVariables opts)
142142 >>=
143− setListVariableM "sourcefile" (T.pack <$> optInputFiles opts)
143+ setListVariableM "sourcefile"
144+ (maybe ["-"] (fmap T.pack) (optInputFiles opts))
144145 >>=
145146 setVariableM "outputfile" outputFile
146147 >>=
test/command/lua-pandoc-state.md+1−1
@@ -2,7 +2,7 @@
22% pandoc --lua-filter=command/lua-pandoc-state.lua --data-dir=foo
33Hello
44^D
5− # input files: 0
5+ # input files: 1
66 output file: nil
77# request header: 0
88 resource path: .