git.iko.soy/typeable/pandoc
on master help sign in
T.P.Parsing: modify gridTableWith' for headerless tables.

If the table lacks a header, the header row should be an empty list. Previously we got a list of empty cells, which caused an empty header to be emitted instead of no header. In LaTeX/PDF output that meant we got a double top line with space between. @tarleb @despres - please let me know if this is problematic for some reason I'm not grasping.

commitc0d8b186d142eb5e9f845de0a4ebcadd04c32dce authorJohn MacFarlane <jgm@berkeley.edu> dateThu 7 Jan 2021, 11:06 (6 years ago) parent533b2ed
6 files changed+22−84
src/Text/Pandoc/Parsing.hs+11−11 test/command/3516.md+1−5 test/command/5708.md+1−5 test/markdown-reader-more.native+5−33 test/rst-reader.native+3−21 test/tables-rstsubset.native+1−9
src/Text/Pandoc/Parsing.hs+11−11
@@ -1069,24 +1069,24 @@ gridTableHeader :: (Stream s m Char, Monad mf, IsString s, HasLastStrPosition st
10691069 => Bool -- ^ Headerless table
10701070 -> ParserT s st m (mf Blocks)
10711071 -> ParserT s st m (mf [Blocks], [Alignment], [Int])
1072−gridTableHeader headless blocks = try $ do
1072+gridTableHeader True _ = do
10731073 optional blanklines
10741074 dashes <- gridDashedLines '-'
1075− rawContent <- if headless
1076− then return $ repeat ""
1077− else many1
1078− (notFollowedBy (gridTableSep '=') >> char '|' >>
1075+ let aligns = map snd dashes
1076+ let lines' = map (snd . fst) dashes
1077+ let indices = scanl (+) 0 lines'
1078+ return (return [], aligns, indices)
1079+gridTableHeader False blocks = try $ do
1080+ optional blanklines
1081+ dashes <- gridDashedLines '-'
1082+ rawContent <- many1 (notFollowedBy (gridTableSep '=') >> char '|' >>
10791083 T.pack <$> many1Till anyChar newline)
1080− underDashes <- if headless
1081− then return dashes
1082− else gridDashedLines '='
1084+ underDashes <- gridDashedLines '='
10831085 guard $ length dashes == length underDashes
10841086 let lines' = map (snd . fst) underDashes
10851087 let indices = scanl (+) 0 lines'
10861088 let aligns = map snd underDashes
1087− let rawHeads = if headless
1088− then replicate (length underDashes) ""
1089− else map (T.unlines . map trim) $ transpose
1089+ let rawHeads = map (T.unlines . map trim) $ transpose
10901090 $ map (gridTableSplitLine indices) rawContent
10911091 heads <- sequence <$> mapM (parseFromString' blocks . trim) rawHeads
10921092 return (heads, aligns, indices)
test/command/3516.md+1−5
@@ -29,11 +29,7 @@ on Windows builds.
2929 [(AlignDefault,ColWidth 5.555555555555555e-2)
3030 ,(AlignDefault,ColWidth 5.555555555555555e-2)]
3131 (TableHead ("",[],[])
32− [Row ("",[],[])
33− [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
34− []
35− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
36− []]])
32+ [])
3733 [(TableBody ("",[],[]) (RowHeadColumns 0)
3834 []
3935 [Row ("",[],[])
test/command/5708.md+1−5
@@ -9,11 +9,7 @@
99 [(AlignDefault,ColWidth 0.125)
1010 ,(AlignDefault,ColWidth 0.2361111111111111)]
1111 (TableHead ("",[],[])
12− [Row ("",[],[])
13− [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
14− []
15− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
16− []]])
12+ [])
1713 [(TableBody ("",[],[]) (RowHeadColumns 0)
1814 []
1915 [Row ("",[],[])
test/markdown-reader-more.native+5−33
@@ -134,13 +134,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "Author",S
134134 ,(AlignDefault,ColWidth 0.16666666666666666)
135135 ,(AlignDefault,ColWidth 0.18055555555555555)]
136136 (TableHead ("",[],[])
137− [Row ("",[],[])
138− [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
139− []
140− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
141− []
142− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
143− []]])
137+ [])
144138 [(TableBody ("",[],[]) (RowHeadColumns 0)
145139 []
146140 [Row ("",[],[])
@@ -198,13 +192,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "Author",S
198192 ,(AlignLeft,ColWidth 0.16666666666666666)
199193 ,(AlignCenter,ColWidth 0.18055555555555555)]
200194 (TableHead ("",[],[])
201− [Row ("",[],[])
202− [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
203− []
204− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
205− []
206− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
207− []]])
195+ [])
208196 [(TableBody ("",[],[]) (RowHeadColumns 0)
209197 []
210198 [Row ("",[],[])
@@ -230,13 +218,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "Author",S
230218 ,(AlignDefault,ColWidth 0.16666666666666666)
231219 ,(AlignDefault,ColWidth 0.18055555555555555)]
232220 (TableHead ("",[],[])
233− [Row ("",[],[])
234− [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
235− []
236− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
237− []
238− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
239− []]])
221+ [])
240222 [(TableBody ("",[],[]) (RowHeadColumns 0)
241223 []
242224 [Row ("",[],[])
@@ -262,13 +244,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "Author",S
262244 ,(AlignDefault,ColWidth 0.16666666666666666)
263245 ,(AlignDefault,ColWidth 0.18055555555555555)]
264246 (TableHead ("",[],[])
265− [Row ("",[],[])
266− [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
267− []
268− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
269− []
270− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
271− []]])
247+ [])
272248 [(TableBody ("",[],[]) (RowHeadColumns 0)
273249 []
274250 [Row ("",[],[])
@@ -300,11 +276,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "Author",S
300276 [(AlignDefault,ColWidth 5.555555555555555e-2)
301277 ,(AlignDefault,ColWidth 5.555555555555555e-2)]
302278 (TableHead ("",[],[])
303− [Row ("",[],[])
304− [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
305− []
306− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
307− []]])
279+ [])
308280 [(TableBody ("",[],[]) (RowHeadColumns 0)
309281 []
310282 [Row ("",[],[])
test/rst-reader.native+3−21
@@ -346,13 +346,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "John",Spa
346346 ,(AlignDefault,ColWidth 0.15)
347347 ,(AlignDefault,ColWidth 0.1625)]
348348 (TableHead ("",[],[])
349− [Row ("",[],[])
350− [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
351− []
352− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
353− []
354− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
355− []]])
349+ [])
356350 [(TableBody ("",[],[]) (RowHeadColumns 0)
357351 []
358352 [Row ("",[],[])
@@ -378,13 +372,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "John",Spa
378372 ,(AlignDefault,ColWidth 0.15)
379373 ,(AlignDefault,ColWidth 0.1625)]
380374 (TableHead ("",[],[])
381− [Row ("",[],[])
382− [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
383− []
384− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
385− []
386− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
387− []]])
375+ [])
388376 [(TableBody ("",[],[]) (RowHeadColumns 0)
389377 []
390378 [Row ("",[],[])
@@ -410,13 +398,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "John",Spa
410398 ,(AlignDefault,ColWidth 0.15)
411399 ,(AlignDefault,ColWidth 0.1625)]
412400 (TableHead ("",[],[])
413− [Row ("",[],[])
414− [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
415− []
416− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
417− []
418− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
419− []]])
401+ [])
420402 [(TableBody ("",[],[]) (RowHeadColumns 0)
421403 []
422404 [Row ("",[],[])
test/tables-rstsubset.native+1−9
@@ -276,15 +276,7 @@
276276 ,(AlignDefault,ColWidth 0.15)
277277 ,(AlignDefault,ColWidth 0.3375)]
278278 (TableHead ("",[],[])
279− [Row ("",[],[])
280− [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
281− []
282− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
283− []
284− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
285− []
286− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
287− []]])
279+ [])
288280 [(TableBody ("",[],[]) (RowHeadColumns 0)
289281 []
290282 [Row ("",[],[])