aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2018-10-19 23:55:01 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2018-10-19 23:55:01 -0700
commitc60ac7c9ab157abf5c0c6450b8c130c477cff3c7 (patch)
treef2402645b0c3fdae6b0246ae25304d9cc6bd07e6
parenteaef8495366f799adefa71d4109a940dfd7d99a2 (diff)
downloadpandoc-c60ac7c9ab157abf5c0c6450b8c130c477cff3c7.tar.gz
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.)
-rw-r--r--src/Text/Pandoc/Readers/Man.hs20
-rw-r--r--test/man-reader.native5
2 files changed, 10 insertions, 15 deletions
diff --git a/src/Text/Pandoc/Readers/Man.hs b/src/Text/Pandoc/Readers/Man.hs
index 0898b3c6a..e4bf58081 100644
--- a/src/Text/Pandoc/Readers/Man.hs
+++ b/src/Text/Pandoc/Readers/Man.hs
@@ -396,18 +396,14 @@ mcomment = msatisfy isMComment where
parseTitle :: PandocMonad m => ManParser m Blocks
parseTitle = do
(MMacro _ args) <- mmacro "TH"
- if null args
- then return mempty
- else do
- let mantitle = fst $ head args
- modifyState (changeTitle mantitle)
- return $ header 1 $ text mantitle
- where
- changeTitle title pst =
- let meta = stateMeta pst
- metaUp = Meta $ M.insert "title" (MetaString title) (unMeta meta)
- in
- pst {stateMeta = metaUp}
+ let adjustMeta =
+ case map fst args of
+ (x:y:z:_) -> setMeta "title" x . setMeta "section" y . setMeta "date" z
+ [x,y] -> setMeta "title" x . setMeta "section" y
+ [x] -> setMeta "title" x
+ [] -> id
+ modifyState $ \st -> st{ stateMeta = adjustMeta $ stateMeta st }
+ return mempty
parseSkippedContent :: PandocMonad m => ManParser m Blocks
parseSkippedContent = mempty <$ (mcomment <|> memptyLine)
diff --git a/test/man-reader.native b/test/man-reader.native
index 2f45a60f3..811c7c5c8 100644
--- a/test/man-reader.native
+++ b/test/man-reader.native
@@ -1,6 +1,5 @@
-Pandoc (Meta {unMeta = fromList [("title",MetaString "Pandoc Man tests")]})
-[Header 1 ("",[],[]) [Str "Pandoc",Space,Str "Man",Space,Str "tests"]
-,Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "set",Space,Str "of",Space,Str "tests",Space,Str "for",Space,Str "pandoc."]
+Pandoc (Meta {unMeta = fromList [("date",MetaString "Oct 17, 2018"),("section",MetaString ""),("title",MetaString "Pandoc Man tests")]})
+[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "set",Space,Str "of",Space,Str "tests",Space,Str "for",Space,Str "pandoc."]
,Para [Str "*",Space,Str "*",Space,Str "*",Space,Str "*",Space,Str "*"]
,Header 1 ("",[],[]) [Str "Headers"]
,Header 1 ("",[],[]) [Str "Level",Space,Str "1"]