From e6ff7f79861d3088f8cba2b22d86d9f75db73f6a Mon Sep 17 00:00:00 2001
From: danse <f.occhipinti@gmail.com>
Date: Mon, 12 Feb 2018 17:10:29 +0100
Subject: [PATCH] Docx reader: Pick table width from the longest row or header

This change is intended to preserve as much of the table content as
possible

Closes #4360
---
 src/Text/Pandoc/Readers/Docx.hs       |  14 +++++++++-----
 test/Tests/Readers/Docx.hs            |   4 ++++
 test/docx/table_variable_width.docx   | Bin 0 -> 10006 bytes
 test/docx/table_variable_width.native |  13 +++++++++++++
 4 files changed, 26 insertions(+), 5 deletions(-)
 create mode 100644 test/docx/table_variable_width.docx
 create mode 100644 test/docx/table_variable_width.native

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
@@ -272,6 +272,10 @@ tests = [ testGroup "inlines"
             "tables with one row"
             "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"
diff --git a/test/docx/table_variable_width.docx b/test/docx/table_variable_width.docx
new file mode 100644
index 0000000000000000000000000000000000000000..89935796839c8e2713e479d29ab5dd185e35d0ab
GIT binary patch
literal 10006
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

literal 0
HcmV?d00001

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"]]
+  ,[]]]]