From 72823ad947face43ef45eaeb7e611979531abed6 Mon Sep 17 00:00:00 2001 From: Emily Bourke Date: Tue, 10 Aug 2021 17:20:53 +0100 Subject: pptx: Select layouts from reference doc by name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Until now, users had to make sure that their reference doc contains layouts in a specific order: the first four layouts in the file had to have a specific structure, or else pandoc would error (or sometimes successfully produce a pptx file, which PowerPoint would then fail to open). This commit changes the layout selection to use the layout names rather than order: users must make sure their reference doc contains four layouts with specific names, and if a layout with the right name isn’t found pandoc will output a warning and use the corresponding layout from the default reference doc as a fallback. I believe the use of names rather than order will be clearer to users, and the clearer errors will help them troubleshoot when things go wrong. - Add tests for moved layouts - Add tests for deleted layouts - Add newly included layouts to slideMaster1.xml to fix tests --- test/Tests/Writers/Powerpoint.hs | 31 ++++++++++++++++----- test/pptx/code-custom_deleted_layouts.pptx | Bin 0 -> 31033 bytes test/pptx/code-custom_moved_layouts.pptx | Bin 0 -> 41822 bytes test/pptx/code_deleted_layouts.pptx | Bin 0 -> 31032 bytes test/pptx/code_moved_layouts.pptx | Bin 0 -> 41826 bytes ...ment-properties-short-desc_deleted_layouts.pptx | Bin 0 -> 29806 bytes ...cument-properties-short-desc_moved_layouts.pptx | Bin 0 -> 40600 bytes test/pptx/document-properties_deleted_layouts.pptx | Bin 0 -> 30210 bytes test/pptx/document-properties_moved_layouts.pptx | Bin 0 -> 41004 bytes test/pptx/endnotes_deleted_layouts.pptx | Bin 0 -> 29774 bytes test/pptx/endnotes_moved_layouts.pptx | Bin 0 -> 40566 bytes test/pptx/endnotes_toc_deleted_layouts.pptx | Bin 0 -> 30596 bytes test/pptx/endnotes_toc_moved_layouts.pptx | Bin 0 -> 41384 bytes test/pptx/images_deleted_layouts.pptx | Bin 0 -> 47424 bytes test/pptx/images_moved_layouts.pptx | Bin 0 -> 58213 bytes test/pptx/inline_formatting_deleted_layouts.pptx | Bin 0 -> 28966 bytes test/pptx/inline_formatting_moved_layouts.pptx | Bin 0 -> 39758 bytes test/pptx/lists_deleted_layouts.pptx | Bin 0 -> 29861 bytes test/pptx/lists_moved_layouts.pptx | Bin 0 -> 40653 bytes test/pptx/raw_ooxml_deleted_layouts.pptx | Bin 0 -> 29754 bytes test/pptx/raw_ooxml_moved_layouts.pptx | Bin 0 -> 40546 bytes test/pptx/reference_deleted_layouts.pptx | Bin 0 -> 18160 bytes test/pptx/reference_moved_layouts.pptx | Bin 0 -> 44237 bytes test/pptx/remove_empty_slides_deleted_layouts.pptx | Bin 0 -> 46867 bytes test/pptx/remove_empty_slides_moved_layouts.pptx | Bin 0 -> 57656 bytes test/pptx/slide_breaks_deleted_layouts.pptx | Bin 0 -> 31378 bytes test/pptx/slide_breaks_moved_layouts.pptx | Bin 0 -> 42171 bytes ...slide_breaks_slide_level_1_deleted_layouts.pptx | Bin 0 -> 30554 bytes .../slide_breaks_slide_level_1_moved_layouts.pptx | Bin 0 -> 41343 bytes test/pptx/slide_breaks_toc_deleted_layouts.pptx | Bin 0 -> 32328 bytes test/pptx/slide_breaks_toc_moved_layouts.pptx | Bin 0 -> 43118 bytes ...eaker_notes_after_metadata_deleted_layouts.pptx | Bin 0 -> 34473 bytes ...speaker_notes_after_metadata_moved_layouts.pptx | Bin 0 -> 45269 bytes .../speaker_notes_afterheader_deleted_layouts.pptx | Bin 0 -> 33500 bytes .../speaker_notes_afterheader_moved_layouts.pptx | Bin 0 -> 44297 bytes .../speaker_notes_afterseps_deleted_layouts.pptx | Bin 0 -> 54390 bytes .../speaker_notes_afterseps_moved_layouts.pptx | Bin 0 -> 65181 bytes test/pptx/speaker_notes_deleted_layouts.pptx | Bin 0 -> 38203 bytes test/pptx/speaker_notes_moved_layouts.pptx | Bin 0 -> 49002 bytes test/pptx/start_numbering_at_deleted_layouts.pptx | Bin 0 -> 29837 bytes test/pptx/start_numbering_at_moved_layouts.pptx | Bin 0 -> 40630 bytes test/pptx/tables_deleted_layouts.pptx | Bin 0 -> 30381 bytes test/pptx/tables_moved_layouts.pptx | Bin 0 -> 41174 bytes test/pptx/two_column_deleted_layouts.pptx | Bin 0 -> 28883 bytes test/pptx/two_column_moved_layouts.pptx | Bin 0 -> 39676 bytes 45 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 test/pptx/code-custom_deleted_layouts.pptx create mode 100644 test/pptx/code-custom_moved_layouts.pptx create mode 100644 test/pptx/code_deleted_layouts.pptx create mode 100644 test/pptx/code_moved_layouts.pptx create mode 100644 test/pptx/document-properties-short-desc_deleted_layouts.pptx create mode 100644 test/pptx/document-properties-short-desc_moved_layouts.pptx create mode 100644 test/pptx/document-properties_deleted_layouts.pptx create mode 100644 test/pptx/document-properties_moved_layouts.pptx create mode 100644 test/pptx/endnotes_deleted_layouts.pptx create mode 100644 test/pptx/endnotes_moved_layouts.pptx create mode 100644 test/pptx/endnotes_toc_deleted_layouts.pptx create mode 100644 test/pptx/endnotes_toc_moved_layouts.pptx create mode 100644 test/pptx/images_deleted_layouts.pptx create mode 100644 test/pptx/images_moved_layouts.pptx create mode 100644 test/pptx/inline_formatting_deleted_layouts.pptx create mode 100644 test/pptx/inline_formatting_moved_layouts.pptx create mode 100644 test/pptx/lists_deleted_layouts.pptx create mode 100644 test/pptx/lists_moved_layouts.pptx create mode 100644 test/pptx/raw_ooxml_deleted_layouts.pptx create mode 100644 test/pptx/raw_ooxml_moved_layouts.pptx create mode 100644 test/pptx/reference_deleted_layouts.pptx create mode 100644 test/pptx/reference_moved_layouts.pptx create mode 100644 test/pptx/remove_empty_slides_deleted_layouts.pptx create mode 100644 test/pptx/remove_empty_slides_moved_layouts.pptx create mode 100644 test/pptx/slide_breaks_deleted_layouts.pptx create mode 100644 test/pptx/slide_breaks_moved_layouts.pptx create mode 100644 test/pptx/slide_breaks_slide_level_1_deleted_layouts.pptx create mode 100644 test/pptx/slide_breaks_slide_level_1_moved_layouts.pptx create mode 100644 test/pptx/slide_breaks_toc_deleted_layouts.pptx create mode 100644 test/pptx/slide_breaks_toc_moved_layouts.pptx create mode 100644 test/pptx/speaker_notes_after_metadata_deleted_layouts.pptx create mode 100644 test/pptx/speaker_notes_after_metadata_moved_layouts.pptx create mode 100644 test/pptx/speaker_notes_afterheader_deleted_layouts.pptx create mode 100644 test/pptx/speaker_notes_afterheader_moved_layouts.pptx create mode 100644 test/pptx/speaker_notes_afterseps_deleted_layouts.pptx create mode 100644 test/pptx/speaker_notes_afterseps_moved_layouts.pptx create mode 100644 test/pptx/speaker_notes_deleted_layouts.pptx create mode 100644 test/pptx/speaker_notes_moved_layouts.pptx create mode 100644 test/pptx/start_numbering_at_deleted_layouts.pptx create mode 100644 test/pptx/start_numbering_at_moved_layouts.pptx create mode 100644 test/pptx/tables_deleted_layouts.pptx create mode 100644 test/pptx/tables_moved_layouts.pptx create mode 100644 test/pptx/two_column_deleted_layouts.pptx create mode 100644 test/pptx/two_column_moved_layouts.pptx (limited to 'test') diff --git a/test/Tests/Writers/Powerpoint.hs b/test/Tests/Writers/Powerpoint.hs index 87ebe990c..344d20238 100644 --- a/test/Tests/Writers/Powerpoint.hs +++ b/test/Tests/Writers/Powerpoint.hs @@ -7,18 +7,21 @@ import System.FilePath import Text.DocTemplates (ToContext(toVal), Context(..)) import qualified Data.Map as M import Data.Text (pack) +import Data.List (unzip4) -- templating is important enough, and can break enough things, that -- we want to run all our tests with both default formatting and a -- template. -modifyPptxName :: FilePath -> FilePath -modifyPptxName fp = - addExtension (dropExtension fp ++ "_templated") "pptx" +modifyPptxName :: FilePath -> String -> FilePath +modifyPptxName fp suffix = + addExtension (dropExtension fp ++ suffix) "pptx" -pptxTests :: String -> WriterOptions -> FilePath -> FilePath -> (TestTree, TestTree) +pptxTests :: String -> WriterOptions -> FilePath -> FilePath -> (TestTree, TestTree, TestTree, TestTree) pptxTests name opts native pptx = let referenceDoc = "pptx/reference_depth.pptx" + movedLayoutsReferenceDoc = "pptx/reference_moved_layouts.pptx" + deletedLayoutsReferenceDoc = "pptx/reference_deleted_layouts.pptx" in ( ooxmlTest writePowerpoint @@ -31,15 +34,29 @@ pptxTests name opts native pptx = name opts{writerReferenceDoc=Just referenceDoc} native - (modifyPptxName pptx) + (modifyPptxName pptx "_templated") + , ooxmlTest + writePowerpoint + name + opts{writerReferenceDoc=Just movedLayoutsReferenceDoc} + native + (modifyPptxName pptx "_moved_layouts") + , ooxmlTest + writePowerpoint + name + opts{writerReferenceDoc=Just deletedLayoutsReferenceDoc} + native + (modifyPptxName pptx "_deleted_layouts") ) -groupPptxTests :: [(TestTree, TestTree)] -> [TestTree] +groupPptxTests :: [(TestTree, TestTree, TestTree, TestTree)] -> [TestTree] groupPptxTests pairs = - let (noRefs, refs) = unzip pairs + let (noRefs, refs, movedLayouts, deletedLayouts) = unzip4 pairs in [ testGroup "Default slide formatting" noRefs , testGroup "With `--reference-doc` pptx file" refs + , testGroup "With layouts in reference doc moved" movedLayouts + , testGroup "With layouts in reference doc deleted" deletedLayouts ] diff --git a/test/pptx/code-custom_deleted_layouts.pptx b/test/pptx/code-custom_deleted_layouts.pptx new file mode 100644 index 000000000..9282e6354 Binary files /dev/null and b/test/pptx/code-custom_deleted_layouts.pptx differ diff --git a/test/pptx/code-custom_moved_layouts.pptx b/test/pptx/code-custom_moved_layouts.pptx new file mode 100644 index 000000000..a14eeb6c8 Binary files /dev/null and b/test/pptx/code-custom_moved_layouts.pptx differ diff --git a/test/pptx/code_deleted_layouts.pptx b/test/pptx/code_deleted_layouts.pptx new file mode 100644 index 000000000..0f503f553 Binary files /dev/null and b/test/pptx/code_deleted_layouts.pptx differ diff --git a/test/pptx/code_moved_layouts.pptx b/test/pptx/code_moved_layouts.pptx new file mode 100644 index 000000000..4d66b1310 Binary files /dev/null and b/test/pptx/code_moved_layouts.pptx differ diff --git a/test/pptx/document-properties-short-desc_deleted_layouts.pptx b/test/pptx/document-properties-short-desc_deleted_layouts.pptx new file mode 100644 index 000000000..e4cf6bd7b Binary files /dev/null and b/test/pptx/document-properties-short-desc_deleted_layouts.pptx differ diff --git a/test/pptx/document-properties-short-desc_moved_layouts.pptx b/test/pptx/document-properties-short-desc_moved_layouts.pptx new file mode 100644 index 000000000..8834f885f Binary files /dev/null and b/test/pptx/document-properties-short-desc_moved_layouts.pptx differ diff --git a/test/pptx/document-properties_deleted_layouts.pptx b/test/pptx/document-properties_deleted_layouts.pptx new file mode 100644 index 000000000..a00c8059d Binary files /dev/null and b/test/pptx/document-properties_deleted_layouts.pptx differ diff --git a/test/pptx/document-properties_moved_layouts.pptx b/test/pptx/document-properties_moved_layouts.pptx new file mode 100644 index 000000000..c1d2d5282 Binary files /dev/null and b/test/pptx/document-properties_moved_layouts.pptx differ diff --git a/test/pptx/endnotes_deleted_layouts.pptx b/test/pptx/endnotes_deleted_layouts.pptx new file mode 100644 index 000000000..5c69a6310 Binary files /dev/null and b/test/pptx/endnotes_deleted_layouts.pptx differ diff --git a/test/pptx/endnotes_moved_layouts.pptx b/test/pptx/endnotes_moved_layouts.pptx new file mode 100644 index 000000000..0d4c491b9 Binary files /dev/null and b/test/pptx/endnotes_moved_layouts.pptx differ diff --git a/test/pptx/endnotes_toc_deleted_layouts.pptx b/test/pptx/endnotes_toc_deleted_layouts.pptx new file mode 100644 index 000000000..46708544c Binary files /dev/null and b/test/pptx/endnotes_toc_deleted_layouts.pptx differ diff --git a/test/pptx/endnotes_toc_moved_layouts.pptx b/test/pptx/endnotes_toc_moved_layouts.pptx new file mode 100644 index 000000000..d1200bd7d Binary files /dev/null and b/test/pptx/endnotes_toc_moved_layouts.pptx differ diff --git a/test/pptx/images_deleted_layouts.pptx b/test/pptx/images_deleted_layouts.pptx new file mode 100644 index 000000000..7a38ea625 Binary files /dev/null and b/test/pptx/images_deleted_layouts.pptx differ diff --git a/test/pptx/images_moved_layouts.pptx b/test/pptx/images_moved_layouts.pptx new file mode 100644 index 000000000..08d1c27e0 Binary files /dev/null and b/test/pptx/images_moved_layouts.pptx differ diff --git a/test/pptx/inline_formatting_deleted_layouts.pptx b/test/pptx/inline_formatting_deleted_layouts.pptx new file mode 100644 index 000000000..bbd5bfeb4 Binary files /dev/null and b/test/pptx/inline_formatting_deleted_layouts.pptx differ diff --git a/test/pptx/inline_formatting_moved_layouts.pptx b/test/pptx/inline_formatting_moved_layouts.pptx new file mode 100644 index 000000000..427492130 Binary files /dev/null and b/test/pptx/inline_formatting_moved_layouts.pptx differ diff --git a/test/pptx/lists_deleted_layouts.pptx b/test/pptx/lists_deleted_layouts.pptx new file mode 100644 index 000000000..6512e44bb Binary files /dev/null and b/test/pptx/lists_deleted_layouts.pptx differ diff --git a/test/pptx/lists_moved_layouts.pptx b/test/pptx/lists_moved_layouts.pptx new file mode 100644 index 000000000..2947c3211 Binary files /dev/null and b/test/pptx/lists_moved_layouts.pptx differ diff --git a/test/pptx/raw_ooxml_deleted_layouts.pptx b/test/pptx/raw_ooxml_deleted_layouts.pptx new file mode 100644 index 000000000..2ea155657 Binary files /dev/null and b/test/pptx/raw_ooxml_deleted_layouts.pptx differ diff --git a/test/pptx/raw_ooxml_moved_layouts.pptx b/test/pptx/raw_ooxml_moved_layouts.pptx new file mode 100644 index 000000000..e58304172 Binary files /dev/null and b/test/pptx/raw_ooxml_moved_layouts.pptx differ diff --git a/test/pptx/reference_deleted_layouts.pptx b/test/pptx/reference_deleted_layouts.pptx new file mode 100644 index 000000000..a9a74ecd5 Binary files /dev/null and b/test/pptx/reference_deleted_layouts.pptx differ diff --git a/test/pptx/reference_moved_layouts.pptx b/test/pptx/reference_moved_layouts.pptx new file mode 100644 index 000000000..72c4f3fd7 Binary files /dev/null and b/test/pptx/reference_moved_layouts.pptx differ diff --git a/test/pptx/remove_empty_slides_deleted_layouts.pptx b/test/pptx/remove_empty_slides_deleted_layouts.pptx new file mode 100644 index 000000000..7ae4a5fab Binary files /dev/null and b/test/pptx/remove_empty_slides_deleted_layouts.pptx differ diff --git a/test/pptx/remove_empty_slides_moved_layouts.pptx b/test/pptx/remove_empty_slides_moved_layouts.pptx new file mode 100644 index 000000000..2572f2447 Binary files /dev/null and b/test/pptx/remove_empty_slides_moved_layouts.pptx differ diff --git a/test/pptx/slide_breaks_deleted_layouts.pptx b/test/pptx/slide_breaks_deleted_layouts.pptx new file mode 100644 index 000000000..86dfad3b2 Binary files /dev/null and b/test/pptx/slide_breaks_deleted_layouts.pptx differ diff --git a/test/pptx/slide_breaks_moved_layouts.pptx b/test/pptx/slide_breaks_moved_layouts.pptx new file mode 100644 index 000000000..90b3b94a6 Binary files /dev/null and b/test/pptx/slide_breaks_moved_layouts.pptx differ diff --git a/test/pptx/slide_breaks_slide_level_1_deleted_layouts.pptx b/test/pptx/slide_breaks_slide_level_1_deleted_layouts.pptx new file mode 100644 index 000000000..2c7fd4d8b Binary files /dev/null and b/test/pptx/slide_breaks_slide_level_1_deleted_layouts.pptx differ diff --git a/test/pptx/slide_breaks_slide_level_1_moved_layouts.pptx b/test/pptx/slide_breaks_slide_level_1_moved_layouts.pptx new file mode 100644 index 000000000..8471b1d10 Binary files /dev/null and b/test/pptx/slide_breaks_slide_level_1_moved_layouts.pptx differ diff --git a/test/pptx/slide_breaks_toc_deleted_layouts.pptx b/test/pptx/slide_breaks_toc_deleted_layouts.pptx new file mode 100644 index 000000000..1e0b76d46 Binary files /dev/null and b/test/pptx/slide_breaks_toc_deleted_layouts.pptx differ diff --git a/test/pptx/slide_breaks_toc_moved_layouts.pptx b/test/pptx/slide_breaks_toc_moved_layouts.pptx new file mode 100644 index 000000000..918264bc5 Binary files /dev/null and b/test/pptx/slide_breaks_toc_moved_layouts.pptx differ diff --git a/test/pptx/speaker_notes_after_metadata_deleted_layouts.pptx b/test/pptx/speaker_notes_after_metadata_deleted_layouts.pptx new file mode 100644 index 000000000..1298870e2 Binary files /dev/null and b/test/pptx/speaker_notes_after_metadata_deleted_layouts.pptx differ diff --git a/test/pptx/speaker_notes_after_metadata_moved_layouts.pptx b/test/pptx/speaker_notes_after_metadata_moved_layouts.pptx new file mode 100644 index 000000000..b844a0b51 Binary files /dev/null and b/test/pptx/speaker_notes_after_metadata_moved_layouts.pptx differ diff --git a/test/pptx/speaker_notes_afterheader_deleted_layouts.pptx b/test/pptx/speaker_notes_afterheader_deleted_layouts.pptx new file mode 100644 index 000000000..853b918cb Binary files /dev/null and b/test/pptx/speaker_notes_afterheader_deleted_layouts.pptx differ diff --git a/test/pptx/speaker_notes_afterheader_moved_layouts.pptx b/test/pptx/speaker_notes_afterheader_moved_layouts.pptx new file mode 100644 index 000000000..9fff9f855 Binary files /dev/null and b/test/pptx/speaker_notes_afterheader_moved_layouts.pptx differ diff --git a/test/pptx/speaker_notes_afterseps_deleted_layouts.pptx b/test/pptx/speaker_notes_afterseps_deleted_layouts.pptx new file mode 100644 index 000000000..1e7f4968d Binary files /dev/null and b/test/pptx/speaker_notes_afterseps_deleted_layouts.pptx differ diff --git a/test/pptx/speaker_notes_afterseps_moved_layouts.pptx b/test/pptx/speaker_notes_afterseps_moved_layouts.pptx new file mode 100644 index 000000000..e092ae444 Binary files /dev/null and b/test/pptx/speaker_notes_afterseps_moved_layouts.pptx differ diff --git a/test/pptx/speaker_notes_deleted_layouts.pptx b/test/pptx/speaker_notes_deleted_layouts.pptx new file mode 100644 index 000000000..6a5ad524f Binary files /dev/null and b/test/pptx/speaker_notes_deleted_layouts.pptx differ diff --git a/test/pptx/speaker_notes_moved_layouts.pptx b/test/pptx/speaker_notes_moved_layouts.pptx new file mode 100644 index 000000000..f95df9622 Binary files /dev/null and b/test/pptx/speaker_notes_moved_layouts.pptx differ diff --git a/test/pptx/start_numbering_at_deleted_layouts.pptx b/test/pptx/start_numbering_at_deleted_layouts.pptx new file mode 100644 index 000000000..d9cf91804 Binary files /dev/null and b/test/pptx/start_numbering_at_deleted_layouts.pptx differ diff --git a/test/pptx/start_numbering_at_moved_layouts.pptx b/test/pptx/start_numbering_at_moved_layouts.pptx new file mode 100644 index 000000000..e1b2d4de8 Binary files /dev/null and b/test/pptx/start_numbering_at_moved_layouts.pptx differ diff --git a/test/pptx/tables_deleted_layouts.pptx b/test/pptx/tables_deleted_layouts.pptx new file mode 100644 index 000000000..a52222551 Binary files /dev/null and b/test/pptx/tables_deleted_layouts.pptx differ diff --git a/test/pptx/tables_moved_layouts.pptx b/test/pptx/tables_moved_layouts.pptx new file mode 100644 index 000000000..56608a039 Binary files /dev/null and b/test/pptx/tables_moved_layouts.pptx differ diff --git a/test/pptx/two_column_deleted_layouts.pptx b/test/pptx/two_column_deleted_layouts.pptx new file mode 100644 index 000000000..60a244f94 Binary files /dev/null and b/test/pptx/two_column_deleted_layouts.pptx differ diff --git a/test/pptx/two_column_moved_layouts.pptx b/test/pptx/two_column_moved_layouts.pptx new file mode 100644 index 000000000..a17f96b18 Binary files /dev/null and b/test/pptx/two_column_moved_layouts.pptx differ -- cgit v1.2.3