git.iko.soy/typeable/pandoc
on master help sign in
Man reader: properly handle multi-block list items.

Closes #4985.

commitf5704fac9769e4b236cfe70292f77b80b19accc6 authorJohn MacFarlane <jgm@berkeley.edu> dateFri 19 Oct 2018, 22:54 (8 years ago) parent3b710b6
3 files changed+37−37
src/Text/Pandoc/Readers/Man.hs+6−6 test/Tests/Readers/Man.hs+4−4 test/man-reader.native+27−27
src/Text/Pandoc/Readers/Man.hs+6−6
@@ -554,15 +554,15 @@ parseList = try $ do
554554 (MMacro _ args) <- mmacro "IP"
555555 let lbuilder = listKind args
556556 inls <- parseInlines
557− subls <- mconcat <$> many sublist
558− return $ (lbuilder, plain inls <> subls)
557+ continuations <- mconcat <$> many continuation
558+ return $ (lbuilder, para inls <> continuations)
559559
560− sublist :: PandocMonad m => ManParser m Blocks
561− sublist = do
560+ continuation :: PandocMonad m => ManParser m Blocks
561+ continuation = do
562562 mmacro "RS"
563− bl <- parseList
563+ bs <- mconcat <$> many (notFollowedBy (mmacro "RE") >> parseBlock)
564564 mmacro "RE"
565− return bl
565+ return bs
566566
567567-- In case of weird man file it will be parsed succesfully
568568parseSkipMacro :: PandocMonad m => ManParser m Blocks
test/Tests/Readers/Man.hs+4−4
@@ -75,16 +75,16 @@ tests = [
7575 testGroup "Lists" [
7676 "bullet" =:
7777 ".IP\nfirst\n.IP\nsecond"
78− =?> bulletList [plain $ str "first", plain $ str "second"]
78+ =?> bulletList [para $ str "first", para $ str "second"]
7979 , "ordered" =:
8080 ".IP 1 a\nfirst\n.IP 2 a\nsecond"
81− =?> orderedListWith (1,Decimal,DefaultDelim) [plain $ str "first", plain $ str "second"]
81+ =?> orderedListWith (1,Decimal,DefaultDelim) [para $ str "first", para $ str "second"]
8282 , "upper" =:
8383 ".IP A a\nfirst\n.IP B a\nsecond"
84− =?> orderedListWith (1,UpperAlpha,DefaultDelim) [plain $ str "first", plain $ str "second"]
84+ =?> orderedListWith (1,UpperAlpha,DefaultDelim) [para $ str "first", para $ str "second"]
8585 , "nested" =:
8686 ".IP\nfirst\n.RS\n.IP\n1a\n.IP\n1b\n.RE"
87− =?> bulletList [(plain $ str "first") <> (bulletList [plain $ str "1a", plain $ str "1b"])]
87+ =?> bulletList [(para $ str "first") <> (bulletList [para $ str "1a", para $ str "1b"])]
8888 ],
8989 testGroup "CodeBlocks" [
9090 "cb1"=:
test/man-reader.native+27−27
@@ -17,8 +17,8 @@ Pandoc (Meta {unMeta = fromList [("title",MetaString "Pandoc Man tests")]})
1717,CodeBlock ("",[],[]) "\nsub status {\n print \"working\";\n}"
1818,Para [Str "A",Space,Str "list:"]
1919,OrderedList (1,Decimal,Period)
20− [[Plain [Str "item",Space,Str "one"]]
21− ,[Plain [Str "item",Space,Str "two"]]]
20+ [[Para [Str "item",Space,Str "one"]]
21+ ,[Para [Str "item",Space,Str "two"]]]
2222,Header 2 ("",[],[]) [Str "Code",Space,Str "Blocks"]
2323,Para [Str "Code:"]
2424,CodeBlock ("",[],[]) "\n---- (should be four hyphens)\n\nsub status {\n print \"working\";\n}\n"
@@ -29,48 +29,48 @@ Pandoc (Meta {unMeta = fromList [("title",MetaString "Pandoc Man tests")]})
2929,Header 3 ("",[],[]) [Str "Unordered"]
3030,Para [Str "Asterisks:"]
3131,BulletList
32− [[Plain [Str "asterisk",Space,Str "1"]]
33− ,[Plain [Str "asterisk",Space,Str "2"]]
34− ,[Plain [Str "asterisk",Space,Str "3"]]]
32+ [[Para [Str "asterisk",Space,Str "1"]]
33+ ,[Para [Str "asterisk",Space,Str "2"]]
34+ ,[Para [Str "asterisk",Space,Str "3"]]]
3535,Header 3 ("",[],[]) [Str "Ordered"]
3636,OrderedList (1,Decimal,Period)
37− [[Plain [Str "First"]]
38− ,[Plain [Str "Second"]]
39− ,[Plain [Str "Third"]]]
37+ [[Para [Str "First"]]
38+ ,[Para [Str "Second"]]
39+ ,[Para [Str "Third"]]]
4040,Header 3 ("",[],[]) [Str "Nested"]
4141,BulletList
42− [[Plain [Str "Tab"]
42+ [[Para [Str "Tab"]
4343 ,BulletList
44− [[Plain [Str "Tab"]
44+ [[Para [Str "Tab"]
4545 ,BulletList
46− [[Plain [Str "Tab"]]]]]]]
46+ [[Para [Str "Tab"]]]]]]]
4747,Para [Str "Here's",Space,Str "another:"]
4848,OrderedList (1,Decimal,Period)
49− [[Plain [Str "First"]]
50− ,[Plain [Str "Second:"]
49+ [[Para [Str "First"]]
50+ ,[Para [Str "Second:"]
5151 ,BulletList
52− [[Plain [Str "Fee"]]
53− ,[Plain [Str "Fie"]]
54− ,[Plain [Str "Foe"]]]]
55− ,[Plain [Str "Third"]]]
52+ [[Para [Str "Fee"]]
53+ ,[Para [Str "Fie"]]
54+ ,[Para [Str "Foe"]]]]
55+ ,[Para [Str "Third"]]]
5656,Para [Str "Same",Space,Str "thing:"]
5757,OrderedList (1,Decimal,Period)
58− [[Plain [Str "First"]]
59− ,[Plain [Str "Second:"]
58+ [[Para [Str "First"]]
59+ ,[Para [Str "Second:"]
6060 ,BulletList
61− [[Plain [Str "Fee"]]
62− ,[Plain [Str "Fie"]]
63− ,[Plain [Str "Foe"]]]]
64− ,[Plain [Str "Third"]]]
61+ [[Para [Str "Fee"]]
62+ ,[Para [Str "Fie"]]
63+ ,[Para [Str "Foe"]]]]
64+ ,[Para [Str "Third"]]]
6565,Header 3 ("",[],[]) [Str "different",Space,Str "styles:"]
6666,OrderedList (1,UpperAlpha,Period)
67− [[Plain [Str "Upper",Space,Str "Alpha"]
67+ [[Para [Str "Upper",Space,Str "Alpha"]
6868 ,OrderedList (1,UpperRoman,Period)
69− [[Plain [Str "Upper",Space,Str "Roman."]
69+ [[Para [Str "Upper",Space,Str "Roman."]
7070 ,OrderedList (6,Decimal,TwoParens)
71− [[Plain [Str "Decimal",Space,Str "start",Space,Str "with",Space,Str "6"]
71+ [[Para [Str "Decimal",Space,Str "start",Space,Str "with",Space,Str "6"]
7272 ,OrderedList (3,LowerAlpha,OneParen)
73− [[Plain [Str "Lower",Space,Str "alpha",Space,Str "with",Space,Str "paren"]]]]]]]]]
73+ [[Para [Str "Lower",Space,Str "alpha",Space,Str "with",Space,Str "paren"]]]]]]]]]
7474,Para [Str "*",Space,Str "*",Space,Str "*",Space,Str "*",Space,Str "*"]
7575,Header 2 ("",[],[]) [Str "Special",Space,Str "Characters"]
7676,Para [Str "AT&T",Space,Str "has",Space,Str "an",Space,Str "ampersand",Space,Str "in",Space,Str "their",Space,Str "name."]