summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-06-20 12:06:00 +0100
committerMichael Williamson <mike@zwobble.org>2016-06-20 12:06:00 +0100
commit8617c85c8626354fff63eeaeb775402715fe63a4 (patch)
treecb6199ae4478ff579a3299dfa47414526fa46d74
parent50abac07dab8bf884cf37515405c6e57edc4ba8a (diff)
Add support for w:sdt elements
-rw-r--r--NEWS5
-rw-r--r--lib/docx/body-reader.js4
-rw-r--r--tests/docx/body-reader.tests.js10
3 files changed, 19 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index a57cf83..c866775 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,8 @@
+# 1.0.4
+
+* Add support for w:sdt elements. This allows the bodies of content controls,
+ such as bibliographies, to be converted.
+
# 1.0.3
* Actually add support for table cells spanning multiple rows.
diff --git a/lib/docx/body-reader.js b/lib/docx/body-reader.js
index 4b37510..71ad29d 100644
--- a/lib/docx/body-reader.js
+++ b/lib/docx/body-reader.js
@@ -182,6 +182,10 @@ function BodyReader(options) {
"mc:AlternateContent": function(element) {
return readChildElements(element.first("mc:Fallback"));
},
+
+ "w:sdt": function(element) {
+ return readXmlElements(element.firstOrEmpty("w:sdtContent").children);
+ },
"w:ins": readChildElements,
"w:smartTag": readChildElements,
diff --git a/tests/docx/body-reader.tests.js b/tests/docx/body-reader.tests.js
index 2e9671f..4a54aeb 100644
--- a/tests/docx/body-reader.tests.js
+++ b/tests/docx/body-reader.tests.js
@@ -656,6 +656,16 @@ describe("readXmlElement: ", function() {
var result = readXmlElement(textbox, {styles: styles});
assert.deepEqual(result.value[0].styleId, "second");
});
+
+ test("w:sdtContent is used when w:sdt is read", function() {
+ var element = xml.element("w:sdt", {}, [
+ xml.element("w:sdtContent", {}, [
+ xml.element("w:t", {}, [xml.text("Blackdown")])
+ ])
+ ]);
+ var result = readXmlElement(element);
+ assert.deepEqual(result.value, [new documents.Text("Blackdown")]);
+ });
test("text nodes are ignored when reading children", function() {
var runXml = new XmlElement("w:r", {}, [xml.text("[text]")]);