diff options
author | Jesse Rosenthal <jrosenthal@jhu.edu> | 2016-12-08 06:57:38 -0500 |
---|---|---|
committer | Jesse Rosenthal <jrosenthal@jhu.edu> | 2016-12-08 07:01:01 -0500 |
commit | 8ced8cbc6e03212f7a9bd871d74ba0e2622c6233 (patch) | |
tree | c4091c32f5fb72d32739b949554b683020689e1e | |
parent | a09f60180f05006bee48dac78148a30ab44f61ab (diff) | |
download | pandoc-8ced8cbc6e03212f7a9bd871d74ba0e2622c6233.tar.gz |
Docx reader: Ensure one-row tables don't have header.
Tables in MS Word are set by default to have special first-row
formatting, which pandoc uses to determine whether or not they have a
header. This means that one-row tables will, by default, have only a
header -- which we imagine is not what people want. This change
ensures that a one-row table is not understood to be a header only.
Note that this means that it is impossible to produce a header-only
table from docx, even though it is legal pandoc. But we believe that
in nearly all cases, it will be an accidental (and unwelcome) result
Closes #3285.
-rw-r--r-- | src/Text/Pandoc/Readers/Docx.hs | 3 | ||||
-rw-r--r-- | tests/Tests/Readers/Docx.hs | 4 | ||||
-rw-r--r-- | tests/docx/table_one_row.docx | bin | 0 -> 25251 bytes | |||
-rw-r--r-- | tests/docx/table_one_row.native | 5 |
4 files changed, 11 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs index 9fe3a3fea..c8a09248a 100644 --- a/src/Text/Pandoc/Readers/Docx.hs +++ b/src/Text/Pandoc/Readers/Docx.hs @@ -568,7 +568,8 @@ bodyPartToBlocks (Tbl _ _ _ []) = bodyPartToBlocks (Tbl cap _ look (r:rs)) = do let caption = text cap (hdr, rows) = case firstRowFormatting look of - True -> (Just r, rs) + True | null rs -> (Nothing, [r]) + | otherwise -> (Just r, rs) False -> (Nothing, r:rs) hdrCells <- case hdr of Just r' -> rowToBlocksList r' diff --git a/tests/Tests/Readers/Docx.hs b/tests/Tests/Readers/Docx.hs index 2fe98b8ac..0d31eb629 100644 --- a/tests/Tests/Readers/Docx.hs +++ b/tests/Tests/Readers/Docx.hs @@ -242,6 +242,10 @@ tests = [ testGroup "inlines" "docx/table_with_list_cell.docx" "docx/table_with_list_cell.native" , testCompare + "tables with one row" + "docx/table_one_row.docx" + "docx/table_one_row.native" + , testCompare "code block" "docx/codeblock.docx" "docx/codeblock.native" diff --git a/tests/docx/table_one_row.docx b/tests/docx/table_one_row.docx Binary files differnew file mode 100644 index 000000000..f7e0ebe43 --- /dev/null +++ b/tests/docx/table_one_row.docx diff --git a/tests/docx/table_one_row.native b/tests/docx/table_one_row.native new file mode 100644 index 000000000..bd1bf8145 --- /dev/null +++ b/tests/docx/table_one_row.native @@ -0,0 +1,5 @@ +[Table [] [AlignDefault,AlignDefault,AlignDefault] [0.0,0.0,0.0] + [] + [[[Plain [Str "One"]] + ,[Plain [Str "Row"]] + ,[Plain [Str "Table"]]]]] |