From 00031fc809117cb436397aba83a41ca1d4056f61 Mon Sep 17 00:00:00 2001 From: Albert Krewinkel <albert@zeitkraut.de> Date: Sun, 13 Dec 2020 14:09:59 +0100 Subject: [PATCH] Docx writer: keep raw openxml strings verbatim. Closes: #6933 --- src/Text/Pandoc/Writers/Docx.hs | 7 +++++-- test/Tests/Writers/Docx.hs | 10 ++++++++++ test/docx/golden/raw-blocks.docx | Bin 0 -> 9888 bytes test/docx/golden/raw-bookmarks.docx | Bin 0 -> 10023 bytes test/docx/raw-blocks.native | 6 ++++++ test/docx/raw-bookmarks.native | 3 +++ 6 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 test/docx/golden/raw-blocks.docx create mode 100644 test/docx/golden/raw-bookmarks.docx create mode 100644 test/docx/raw-blocks.native create mode 100644 test/docx/raw-bookmarks.native diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs index 97048e980..0174a8501 100644 --- a/src/Text/Pandoc/Writers/Docx.hs +++ b/src/Text/Pandoc/Writers/Docx.hs @@ -978,7 +978,9 @@ blockToOpenXML' opts (Para lst) return [Elem $ mknode "w:p" [] (map Elem paraProps' ++ contents)] blockToOpenXML' opts (LineBlock lns) = blockToOpenXML opts $ linesToPara lns blockToOpenXML' _ b@(RawBlock format str) - | format == Format "openxml" = return (parseXML str) + | format == Format "openxml" = return [ + Text (CData CDataRaw (T.unpack str) Nothing) + ] | otherwise = do report $ BlockNotRendered b return [] @@ -1312,7 +1314,8 @@ inlineToOpenXML' opts (Strikeout lst) = $ inlinesToOpenXML opts lst inlineToOpenXML' _ LineBreak = return [Elem br] inlineToOpenXML' _ il@(RawInline f str) - | f == Format "openxml" = return (parseXML str) + | f == Format "openxml" = return + [Text (CData CDataRaw (T.unpack str) Nothing)] | otherwise = do report $ InlineNotRendered il return [] diff --git a/test/Tests/Writers/Docx.hs b/test/Tests/Writers/Docx.hs index 8f051b4b7..66a5c3d36 100644 --- a/test/Tests/Writers/Docx.hs +++ b/test/Tests/Writers/Docx.hs @@ -128,6 +128,16 @@ tests = [ testGroup "inlines" def "docx/codeblock.native" "docx/golden/codeblock.docx" + , docxTest + "raw OOXML blocks" + def + "docx/raw-blocks.native" + "docx/golden/raw-blocks.docx" + , docxTest + "raw bookmark markers" + def + "docx/raw-bookmarks.native" + "docx/golden/raw-bookmarks.docx" ] , testGroup "track changes" [ docxTest diff --git a/test/docx/golden/raw-blocks.docx b/test/docx/golden/raw-blocks.docx new file mode 100644 index 0000000000000000000000000000000000000000..ae7f8f1f0ef0265d80a28ffe7db37ed7e17c7058 GIT binary patch literal 9888 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 RUm_D4013Ql{3w1s{SQAF1=#=q literal 0 HcmV?d00001 diff --git a/test/docx/golden/raw-bookmarks.docx b/test/docx/golden/raw-bookmarks.docx new file mode 100644 index 0000000000000000000000000000000000000000..5e433b7367852055a8ac7c912b0679ebe33b1cff GIT binary patch literal 10023 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�*i$^F`(u{T9vA5m;K5{HEj01l95!>If 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 literal 0 HcmV?d00001 diff --git a/test/docx/raw-blocks.native b/test/docx/raw-blocks.native new file mode 100644 index 000000000..d7f985bc3 --- /dev/null +++ b/test/docx/raw-blocks.native @@ -0,0 +1,6 @@ +[Para [Str "Cell",Space,Str "compartments"] +,RawBlock (Format "openxml") "<w:tbl>\n<w:tblPr>\n<w:tblW w:w=\"2000\" w:type=\"pct\"/>\n<w:tblBorders>\n<w:top w:val=\"single\" w:sz=\"4\" w:color=\"198200\"/>\n<w:start w:val=\"single\" w:sz=\"4\" w:color=\"198200\"/>\n<w:bottom w:val=\"single\" w:sz=\"4\" w:color=\"198200\"/>\n<w:end w:val=\"single\" w:sz=\"4\" w:color=\"198200\"/>\n</w:tblBorders>\n</w:tblPr>\n<w:tblGrid>\n<w:gridCol w:w=\"1871\" />\n<w:gridCol w:w=\"1872\" />\n</w:tblGrid>\n<w:tr>\n<w:tc>" +,Para [Str "Ribosome"] +,RawBlock (Format "openxml") "</w:tc>\n<w:tc>" +,Para [Str "Lysosome"] +,RawBlock (Format "openxml") "</w:tc>\n</w:tr>\n</w:tbl>"] diff --git a/test/docx/raw-bookmarks.native b/test/docx/raw-bookmarks.native new file mode 100644 index 000000000..1e76655d6 --- /dev/null +++ b/test/docx/raw-bookmarks.native @@ -0,0 +1,3 @@ +[Para [Str "Manual",Space,Str "endnotes."] +,Para [Str "Nullam",Space,Str "eu",Space,Str "ante",Space,Str "vel",Space,Str "est",Space,Str "convallis",Space,Str "dignissim.",Space,Str "Nunc",Space,Str "porta",Space,Str "vulputate",Space,Str "tellus.",Space,Str "Nunc",Space,Str "rutrum",Space,Str "turpis",Space,Str "sed",Space,Str "pede.",Space,Str "Sed",Space,Str "bibendum.",RawInline (Format "openxml") "<w:bookmarkStart w:id=\"0\" w:name=\"Aliquam\"/>",Str "Aliquam",Space,Str "posuere."] +,Para [Str "Nunc",Space,Str "aliquet,",Space,Str "augue",Space,Str "nec",Space,Str "adipiscing",Space,Str "interdum,",Space,Str "lacus",Space,Str "tellus",Space,Str "malesuada",Space,Str "massa,",Space,Str "quis",Space,Str "varius",Space,Str "mi",Space,Str "purus",Space,Str "non",Space,Str "odio.",RawInline (Format "openxml") "<w:bookmarkEnd w:id=\"0\"/>",Str "Pellentesque",Space,Str "condimentum,",Space,Str "magna",Space,Str "ut",Space,Str "suscipit",Space,Str "hendrerit,",Space,Str "ipsum",Space,Str "augue",Space,Str "ornare",Space,Str "nulla,",Space,Str "non",Space,Str "luctus",Space,Str "diam",Space,Str "neque",Space,Str "sit",Space,Str "amet",Space,Str "urna.",Space,Str "Curabitur",Space,Str "vulputate",Space,Str "vestibulum",Space,Str "lorem."]]