summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-11-26 13:54:44 +0000
committerMichael Williamson <mike@zwobble.org>2013-11-26 13:54:44 +0000
commit019785ec43c367c2f5c7c90f445bc9e1fa6d61a5 (patch)
treef3359e2a2bb39a35c48180a1ed6d2a7a0d35e557
parentaeb60aaf362200477e36c3c5ae17f8c063a21568 (diff)
Handle hyperlink elements without relationship ID
-rw-r--r--lib/document-xml-reader.js11
-rw-r--r--tests/document-xml-reader.tests.js7
2 files changed, 14 insertions, 4 deletions
diff --git a/lib/document-xml-reader.js b/lib/document-xml-reader.js
index ae1c4a6..a661e20 100644
--- a/lib/document-xml-reader.js
+++ b/lib/document-xml-reader.js
@@ -104,11 +104,14 @@ function DocumentXmlReader(relationships, contentTypes, docxFile, numbering) {
},
"w:hyperlink": function(element) {
var relationshipId = element.attributes["r:id"];
- var href = relationships[relationshipId].target;
- return readXmlElements(element.children)
- .map(function(children) {
+ return readXmlElements(element.children).map(function(children) {
+ if (relationshipId) {
+ var href = relationships[relationshipId].target;
return new documents.Hyperlink(children, {href: href});
- });
+ } else {
+ return children;
+ }
+ });
},
"w:ins": function(element) {
diff --git a/tests/document-xml-reader.tests.js b/tests/document-xml-reader.tests.js
index 01ecac4..d2bcc76 100644
--- a/tests/document-xml-reader.tests.js
+++ b/tests/document-xml-reader.tests.js
@@ -233,6 +233,13 @@ describe("readXmlElement: ", function() {
assert.deepEqual(result.value.href, "http://example.com");
assert.deepEqual(result.value.children[0].type, "run");
});
+
+ test("w:hyperlink is ignored if it does not have a relationship ID", function() {
+ var runXml = new XmlElement("w:r", {}, []);
+ var hyperlinkXml = new XmlElement("w:hyperlink", {}, [runXml]);
+ var result = readXmlElement(hyperlinkXml);
+ assert.deepEqual(result.value[0].type, "run");
+ });
});
function runWithProperties(children) {