From 60004cd518f0fc72d45633dbb552f153bc3bfe96 Mon Sep 17 00:00:00 2001 From: Jesse Rosenthal Date: Tue, 13 Dec 2016 06:58:16 -0500 Subject: Docx reader: Empty header should be list of lists. In the past, the docx reader wrote an empty header as an empty list. It should have the same width as a row (and be filled with empty cells). (Note that I've reordered the code here slightly to get rid of a call to `head`. It wasn't unsafe because it tested for null, but it was a bit of a smell.) --- src/Text/Pandoc/Readers/Docx.hs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/Text/Pandoc') diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs index c8a09248a..595c805bf 100644 --- a/src/Text/Pandoc/Readers/Docx.hs +++ b/src/Text/Pandoc/Readers/Docx.hs @@ -571,23 +571,25 @@ bodyPartToBlocks (Tbl cap _ look (r:rs)) = do True | null rs -> (Nothing, [r]) | otherwise -> (Just r, rs) False -> (Nothing, r:rs) + + cells <- mapM rowToBlocksList rows + + let width = case cells of + r':_ -> length r' + -- shouldn't happen + [] -> 0 + hdrCells <- case hdr of Just r' -> rowToBlocksList r' - Nothing -> return [] - - cells <- mapM rowToBlocksList rows + Nothing -> return $ replicate width mempty - let size = case null hdrCells of - True -> length $ head cells - False -> length $ hdrCells - -- -- The two following variables (horizontal column alignment and -- relative column widths) go to the default at the -- moment. Width information is in the TblGrid field of the Tbl, -- so should be possible. Alignment might be more difficult, -- since there doesn't seem to be a column entity in docx. - alignments = replicate size AlignDefault - widths = replicate size 0 :: [Double] + let alignments = replicate width AlignDefault + widths = replicate width 0 :: [Double] return $ table caption (zip alignments widths) hdrCells cells bodyPartToBlocks (OMathPara e) = do -- cgit v1.2.3