From ce2b023e13fcae31710da4fbb2ada2d0e8f5f4cc Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Wed, 19 Jul 2023 15:21:39 -0700 Subject: Refine command line option preprocessor and add tests for #8956. The substantive change here is the `-strue` will now work instead of being interpreted as `-s -true`. This is somewhat ad hoc, but I don't think we'll ever have an output format named `rue`, so it's probably okay. --- src/Text/Pandoc/App/CommandLineOptions.hs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/Text') diff --git a/src/Text/Pandoc/App/CommandLineOptions.hs b/src/Text/Pandoc/App/CommandLineOptions.hs index 22e824ade..e76344088 100644 --- a/src/Text/Pandoc/App/CommandLineOptions.hs +++ b/src/Text/Pandoc/App/CommandLineOptions.hs @@ -238,8 +238,16 @@ pdfEngines = nubOrd $ map snd engines preprocessArgs :: [String] -> [String] preprocessArgs [] = [] preprocessArgs ("--":xs) = "--" : xs -- a bare '--' ends option parsing +-- note that -strue is interpreted as -strue while +-- -stmarkdown is interpreted as -s -tmarkdown preprocessArgs (('-':c:d:cs):xs) | isShortBooleanOpt c + , case toLower <$> (d:cs) of + "true" -> True + "false" -> True + _ -> False + = ('-':c:d:cs) : preprocessArgs xs + | isShortBooleanOpt c , isShortOpt d = splitArg (c:d:cs) ++ preprocessArgs xs preprocessArgs (x:xs) = x : preprocessArgs xs -- cgit v1.2.3