git.iko.soy/typeable/pandoc
on master help sign in
Simplified Opt structure in cli option parsing.

We should make this closer to the actual options, and do processing outside.

commit7d3702e807abbb1c987157b47135bf9efdcaff98 authorJohn MacFarlane <jgm@berkeley.edu> dateSat 4 Feb 2017, 10:09 (10 years ago) parent3a332fa
1 file changed+10−9
pandoc.hs+10−9
pandoc.hs+10−9
@@ -124,7 +124,7 @@ convertWithOpts opts args = do
124124 , optVariables = variables
125125 , optMetadata = metadata
126126 , optTableOfContents = toc
127− , optTransforms = transforms
127+ , optBaseHeaderLevel = baseHeaderLevel
128128 , optTemplate = templatePath
129129 , optOutputFile = outputFile
130130 , optNumberSections = numberSections
@@ -354,6 +354,10 @@ convertWithOpts opts args = do
354354 "Specify an output file using the -o option."
355355
356356
357+ let transforms = if baseHeaderLevel > 1
358+ then [headerShift (baseHeaderLevel - 1)]
359+ else []
360+
357361 let convertTabs = tabFilter (if preserveTabs || readerName' == "t2t"
358362 then 0
359363 else tabStop)
@@ -526,7 +530,7 @@ data Opt = Opt
526530 , optWriter :: String -- ^ Writer format
527531 , optParseRaw :: Bool -- ^ Parse unconvertable HTML and TeX
528532 , optTableOfContents :: Bool -- ^ Include table of contents
529− , optTransforms :: [Transform] -- ^ Doc transforms to apply
533+ , optBaseHeaderLevel :: Int -- ^ Base header level
530534 , optTemplate :: Maybe FilePath -- ^ Custom template
531535 , optVariables :: [(String,String)] -- ^ Template variables to set
532536 , optMetadata :: M.Map String MetaValue -- ^ Metadata fields to set
@@ -585,7 +589,7 @@ defaultOpts = Opt
585589 , optWriter = "" -- null for default writer
586590 , optParseRaw = False
587591 , optTableOfContents = False
588− , optTransforms = []
592+ , optBaseHeaderLevel = 1
589593 , optTemplate = Nothing
590594 , optVariables = []
591595 , optMetadata = M.empty
@@ -671,13 +675,10 @@ options =
671675 (ReqArg
672676 (\arg opt ->
673677 case safeRead arg of
674− Just t | t > 0 -> do
675− let oldTransforms = optTransforms opt
676− let shift = t - 1
677− return opt{ optTransforms =
678− headerShift shift : oldTransforms }
678+ Just t | t > 0 && t < 6 -> do
679+ return opt{ optBaseHeaderLevel = t }
679680 _ -> err 19
680− "base-header-level must be a number > 0")
681+ "base-header-level must be 1-5")
681682 "NUMBER")
682683 "" -- "Headers base level"
683684