git.iko.soy/typeable/pandoc
on master help sign in
Man reader: improve treatment of .TH.

This should just add to metadata (title, date, section), and not produce a level-1 header. (That might be done in the template, depending on the output format.)

commitc60ac7c9ab157abf5c0c6450b8c130c477cff3c7 authorJohn MacFarlane <jgm@berkeley.edu> dateFri 19 Oct 2018, 23:55 (8 years ago) parenteaef849
2 files changed+10−15
src/Text/Pandoc/Readers/Man.hs+8−12 test/man-reader.native+2−3
src/Text/Pandoc/Readers/Man.hs+8−12
@@ -396,18 +396,14 @@ mcomment = msatisfy isMComment where
396396parseTitle :: PandocMonad m => ManParser m Blocks
397397parseTitle = do
398398 (MMacro _ args) <- mmacro "TH"
399− if null args
400− then return mempty
401− else do
402− let mantitle = fst $ head args
403− modifyState (changeTitle mantitle)
404− return $ header 1 $ text mantitle
405− where
406− changeTitle title pst =
407− let meta = stateMeta pst
408− metaUp = Meta $ M.insert "title" (MetaString title) (unMeta meta)
409− in
410− pst {stateMeta = metaUp}
399+ let adjustMeta =
400+ case map fst args of
401+ (x:y:z:_) -> setMeta "title" x . setMeta "section" y . setMeta "date" z
402+ [x,y] -> setMeta "title" x . setMeta "section" y
403+ [x] -> setMeta "title" x
404+ [] -> id
405+ modifyState $ \st -> st{ stateMeta = adjustMeta $ stateMeta st }
406+ return mempty
411407
412408parseSkippedContent :: PandocMonad m => ManParser m Blocks
413409parseSkippedContent = mempty <$ (mcomment <|> memptyLine)
test/man-reader.native+2−3
@@ -1,6 +1,5 @@
1−Pandoc (Meta {unMeta = fromList [("title",MetaString "Pandoc Man tests")]})
2−[Header 1 ("",[],[]) [Str "Pandoc",Space,Str "Man",Space,Str "tests"]
3−,Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "set",Space,Str "of",Space,Str "tests",Space,Str "for",Space,Str "pandoc."]
1+Pandoc (Meta {unMeta = fromList [("date",MetaString "Oct 17, 2018"),("section",MetaString ""),("title",MetaString "Pandoc Man tests")]})
2+[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "set",Space,Str "of",Space,Str "tests",Space,Str "for",Space,Str "pandoc."]
43,Para [Str "*",Space,Str "*",Space,Str "*",Space,Str "*",Space,Str "*"]
54,Header 1 ("",[],[]) [Str "Headers"]
65,Header 1 ("",[],[]) [Str "Level",Space,Str "1"]