Docx writer: keep raw openxml strings verbatim.

Closes: #6933
This commit is contained in:
Albert Krewinkel 2020-12-13 14:09:59 +01:00
parent 8cf58d96e0
commit 00031fc809
No known key found for this signature in database
GPG key ID: 388DC0B21F631124
6 changed files with 24 additions and 2 deletions

View file

@ -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 []

View file

@ -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

Binary file not shown.

Binary file not shown.

View file

@ -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>"]

View file

@ -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."]]