git.iko.soy/typeable/pandoc
on master help sign in
RST reader: don't insert paragraphs where docutils doesn't.

rst2html doesn't add `<p>` tags to list items (even when they are separated by blank lines) unless there are multiple paragraphs in the list. This commit changes the RST reader to conform more closely to what docutils does. Closes #880.

commitb04dfde403b4b43dbdf046f37c0b240e6f8af488 authorJohn MacFarlane <jgm@berkeley.edu> dateTue 18 Jun 2013, 10:04 (13 years ago) parenta43e0ad
2 files changed+32−27
src/Text/Pandoc/Readers/RST.hs+6−1 tests/rst-reader.native+26−26
src/Text/Pandoc/Readers/RST.hs+6−1
@@ -441,7 +441,12 @@ listItem start = try $ do
441441 -- parse the extracted block, which may itself contain block elements
442442 parsed <- parseFromString parseBlocks $ concat (first:rest) ++ blanks
443443 updateState (\st -> st {stateParserContext = oldContext})
444− return parsed
444+ return $ case B.toList parsed of
445+ [Para xs] -> B.singleton $ Plain xs
446+ [Para xs, BulletList ys] -> B.fromList [Plain xs, BulletList ys]
447+ [Para xs, OrderedList s ys] -> B.fromList [Plain xs, OrderedList s ys]
448+ [Para xs, DefinitionList ys] -> B.fromList [Plain xs, DefinitionList ys]
449+ _ -> parsed
445450
446451orderedList :: RSTParser Blocks
447452orderedList = try $ do
tests/rst-reader.native+26−26
@@ -51,9 +51,9 @@ Pandoc (Meta {docTitle = [Str "Pandoc",Space,Str "Test",Space,Str "Suite",Str ":
5151 ,[Plain [Str "asterisk",Space,Str "3"]]]
5252,Para [Str "Asterisks",Space,Str "loose:"]
5353,BulletList
54− [[Para [Str "asterisk",Space,Str "1"]]
55− ,[Para [Str "asterisk",Space,Str "2"]]
56− ,[Para [Str "asterisk",Space,Str "3"]]]
54+ [[Plain [Str "asterisk",Space,Str "1"]]
55+ ,[Plain [Str "asterisk",Space,Str "2"]]
56+ ,[Plain [Str "asterisk",Space,Str "3"]]]
5757,Para [Str "Pluses",Space,Str "tight:"]
5858,BulletList
5959 [[Plain [Str "Plus",Space,Str "1"]]
@@ -61,9 +61,9 @@ Pandoc (Meta {docTitle = [Str "Pandoc",Space,Str "Test",Space,Str "Suite",Str ":
6161 ,[Plain [Str "Plus",Space,Str "3"]]]
6262,Para [Str "Pluses",Space,Str "loose:"]
6363,BulletList
64− [[Para [Str "Plus",Space,Str "1"]]
65− ,[Para [Str "Plus",Space,Str "2"]]
66− ,[Para [Str "Plus",Space,Str "3"]]]
64+ [[Plain [Str "Plus",Space,Str "1"]]
65+ ,[Plain [Str "Plus",Space,Str "2"]]
66+ ,[Plain [Str "Plus",Space,Str "3"]]]
6767,Para [Str "Minuses",Space,Str "tight:"]
6868,BulletList
6969 [[Plain [Str "Minus",Space,Str "1"]]
@@ -71,9 +71,9 @@ Pandoc (Meta {docTitle = [Str "Pandoc",Space,Str "Test",Space,Str "Suite",Str ":
7171 ,[Plain [Str "Minus",Space,Str "3"]]]
7272,Para [Str "Minuses",Space,Str "loose:"]
7373,BulletList
74− [[Para [Str "Minus",Space,Str "1"]]
75− ,[Para [Str "Minus",Space,Str "2"]]
76− ,[Para [Str "Minus",Space,Str "3"]]]
74+ [[Plain [Str "Minus",Space,Str "1"]]
75+ ,[Plain [Str "Minus",Space,Str "2"]]
76+ ,[Plain [Str "Minus",Space,Str "3"]]]
7777,Header 2 ("",[],[]) [Str "Ordered"]
7878,Para [Str "Tight:"]
7979,OrderedList (1,Decimal,Period)
@@ -87,37 +87,37 @@ Pandoc (Meta {docTitle = [Str "Pandoc",Space,Str "Test",Space,Str "Suite",Str ":
8787 ,[Plain [Str "Three"]]]
8888,Para [Str "Loose",Space,Str "using",Space,Str "tabs:"]
8989,OrderedList (1,Decimal,Period)
90− [[Para [Str "First"]]
91− ,[Para [Str "Second"]]
92− ,[Para [Str "Third"]]]
90+ [[Plain [Str "First"]]
91+ ,[Plain [Str "Second"]]
92+ ,[Plain [Str "Third"]]]
9393,Para [Str "and",Space,Str "using",Space,Str "spaces:"]
9494,OrderedList (1,Decimal,Period)
95− [[Para [Str "One"]]
96− ,[Para [Str "Two"]]
97− ,[Para [Str "Three"]]]
95+ [[Plain [Str "One"]]
96+ ,[Plain [Str "Two"]]
97+ ,[Plain [Str "Three"]]]
9898,Para [Str "Multiple",Space,Str "paragraphs:"]
9999,OrderedList (1,Decimal,Period)
100100 [[Para [Str "Item",Space,Str "1,",Space,Str "graf",Space,Str "one."]
101101 ,Para [Str "Item",Space,Str "1.",Space,Str "graf",Space,Str "two.",Space,Str "The",Space,Str "quick",Space,Str "brown",Space,Str "fox",Space,Str "jumped",Space,Str "over",Space,Str "the",Space,Str "lazy",Space,Str "dog\8217s",Space,Str "back."]]
102− ,[Para [Str "Item",Space,Str "2."]]
103− ,[Para [Str "Item",Space,Str "3."]]]
102+ ,[Plain [Str "Item",Space,Str "2."]]
103+ ,[Plain [Str "Item",Space,Str "3."]]]
104104,Para [Str "Nested:"]
105105,BulletList
106− [[Para [Str "Tab"]
106+ [[Plain [Str "Tab"]
107107 ,BulletList
108− [[Para [Str "Tab"]
108+ [[Plain [Str "Tab"]
109109 ,BulletList
110110 [[Plain [Str "Tab"]]]]]]]
111111,Para [Str "Here\8217s",Space,Str "another:"]
112112,OrderedList (1,Decimal,Period)
113− [[Para [Str "First"]]
113+ [[Plain [Str "First"]]
114114 ,[Para [Str "Second:"]
115115 ,BlockQuote
116116 [BulletList
117117 [[Plain [Str "Fee"]]
118118 ,[Plain [Str "Fie"]]
119119 ,[Plain [Str "Foe"]]]]]
120− ,[Para [Str "Third"]]]
120+ ,[Plain [Str "Third"]]]
121121,Header 2 ("",[],[]) [Str "Fancy",Space,Str "list",Space,Str "markers"]
122122,OrderedList (2,Decimal,TwoParens)
123123 [[Plain [Str "begins",Space,Str "with",Space,Str "2"]]
@@ -125,23 +125,23 @@ Pandoc (Meta {docTitle = [Str "Pandoc",Space,Str "Test",Space,Str "Suite",Str ":
125125 ,Para [Str "with",Space,Str "a",Space,Str "continuation"]
126126 ,OrderedList (4,LowerRoman,Period)
127127 [[Plain [Str "sublist",Space,Str "with",Space,Str "roman",Space,Str "numerals,",Space,Str "starting",Space,Str "with",Space,Str "4"]]
128− ,[Para [Str "more",Space,Str "items"]
128+ ,[Plain [Str "more",Space,Str "items"]
129129 ,OrderedList (1,UpperAlpha,TwoParens)
130130 [[Plain [Str "a",Space,Str "subsublist"]]
131131 ,[Plain [Str "a",Space,Str "subsublist"]]]]]]]
132132,Para [Str "Nesting:"]
133133,OrderedList (1,UpperAlpha,Period)
134− [[Para [Str "Upper",Space,Str "Alpha"]
134+ [[Plain [Str "Upper",Space,Str "Alpha"]
135135 ,OrderedList (1,UpperRoman,Period)
136− [[Para [Str "Upper",Space,Str "Roman."]
136+ [[Plain [Str "Upper",Space,Str "Roman."]
137137 ,OrderedList (6,Decimal,TwoParens)
138− [[Para [Str "Decimal",Space,Str "start",Space,Str "with",Space,Str "6"]
138+ [[Plain [Str "Decimal",Space,Str "start",Space,Str "with",Space,Str "6"]
139139 ,OrderedList (3,LowerAlpha,OneParen)
140140 [[Plain [Str "Lower",Space,Str "alpha",Space,Str "with",Space,Str "paren"]]]]]]]]]
141141,Para [Str "Autonumbering:"]
142142,OrderedList (1,DefaultStyle,DefaultDelim)
143143 [[Plain [Str "Autonumber."]]
144− ,[Para [Str "More."]
144+ ,[Plain [Str "More."]
145145 ,OrderedList (1,DefaultStyle,DefaultDelim)
146146 [[Plain [Str "Nested."]]]]]
147147,Para [Str "Autonumbering",Space,Str "with",Space,Str "explicit",Space,Str "start:"]