diff options
-rw-r--r-- | src/Text/Pandoc/Readers/Docx.hs | 14 | ||||
-rw-r--r-- | test/Tests/Readers/Docx.hs | 4 | ||||
-rw-r--r-- | test/docx/table_variable_width.docx | bin | 0 -> 10006 bytes | |||
-rw-r--r-- | test/docx/table_variable_width.native | 13 |
4 files changed, 26 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs index c24c43901..098759a61 100644 --- a/src/Text/Pandoc/Readers/Docx.hs +++ b/src/Text/Pandoc/Readers/Docx.hs @@ -642,7 +642,7 @@ bodyPartToBlocks (ListItem pPr _ _ _ parparts) = bodyPartToBlocks $ Paragraph pPr' parparts bodyPartToBlocks (Tbl _ _ _ []) = return $ para mempty -bodyPartToBlocks (Tbl cap _ look (r:rs)) = do +bodyPartToBlocks (Tbl cap _ look parts@(r:rs)) = do let caption = text cap (hdr, rows) = case firstRowFormatting look of True | null rs -> (Nothing, [r]) @@ -651,10 +651,14 @@ bodyPartToBlocks (Tbl cap _ look (r:rs)) = do cells <- mapM rowToBlocksList rows - let width = case cells of - r':_ -> length r' - -- shouldn't happen - [] -> 0 + let width = maybe 0 maximum $ nonEmpty $ map rowLength parts + -- Data.List.NonEmpty is not available with ghc 7.10 so we roll out + -- our own, see + -- https://github.com/jgm/pandoc/pull/4361#issuecomment-365416155 + nonEmpty [] = Nothing + nonEmpty l = Just l + rowLength :: Row -> Int + rowLength (Row c) = length c hdrCells <- case hdr of Just r' -> rowToBlocksList r' diff --git a/test/Tests/Readers/Docx.hs b/test/Tests/Readers/Docx.hs index 89a605bf7..9c9a8179b 100644 --- a/test/Tests/Readers/Docx.hs +++ b/test/Tests/Readers/Docx.hs @@ -273,6 +273,10 @@ tests = [ testGroup "inlines" "docx/table_one_row.docx" "docx/table_one_row.native" , testCompare + "tables with variable width" + "docx/table_variable_width.docx" + "docx/table_variable_width.native" + , testCompare "code block" "docx/codeblock.docx" "docx/codeblock.native" diff --git a/test/docx/table_variable_width.docx b/test/docx/table_variable_width.docx Binary files differnew file mode 100644 index 000000000..899357968 --- /dev/null +++ b/test/docx/table_variable_width.docx diff --git a/test/docx/table_variable_width.native b/test/docx/table_variable_width.native new file mode 100644 index 000000000..9d3b961df --- /dev/null +++ b/test/docx/table_variable_width.native @@ -0,0 +1,13 @@ +[Table [] [AlignDefault,AlignDefault,AlignDefault,AlignDefault,AlignDefault] [0.0,0.0,0.0,0.0,0.0] + [[] + ,[] + ,[Plain [Str "h3"]] + ,[Plain [Str "h4"]] + ,[Plain [Str "h5"]]] + [[[Plain [Str "c11"]] + ,[] + ,[]] + ,[[] + ,[Plain [Str "c22"]] + ,[Plain [Str "c23"]] + ,[]]]] |