diff options
| author | Michael Williamson <mike@zwobble.org> | 2018-01-16 22:39:51 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2018-01-16 22:39:51 +0000 |
| commit | fae22b10bf8664ee65a2674b9c7cdbf926dd758f (patch) | |
| tree | 7e64cca25945bf52580dd8252ede214c7010dc91 | |
| parent | d3b5060cdd565e6d7454c75f8de68987be9ed2c8 (diff) | |
Handle leading slashes in target
| -rw-r--r-- | lib/docx/docx-reader.js | 13 | ||||
| -rw-r--r-- | test/docx/docx-reader.tests.js | 2 |
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/docx/docx-reader.js b/lib/docx/docx-reader.js index 67ff11d..f0b6c89 100644 --- a/lib/docx/docx-reader.js +++ b/lib/docx/docx-reader.js @@ -82,12 +82,23 @@ function read(docxFile, input) { function findDocumentFilename(docxFile, relationships) { var targets = ["word/document.xml"].concat(relationships.findTargetsByType("http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument")); - var validTargets = targets.filter(function(target) { + var normalisedTargets = targets.map(function(target) { + return stripPrefix(target, "/"); + }); + var validTargets = normalisedTargets.filter(function(target) { return docxFile.exists(target); }); return validTargets[0]; } +function stripPrefix(value, prefix) { + if (value.substring(0, prefix.length) === prefix) { + return value.substring(prefix.length); + } else { + return value; + } +} + function xmlFileReader(options) { return function(zipFile) { return readXmlFromZipFile(zipFile, options.filename) diff --git a/test/docx/docx-reader.tests.js b/test/docx/docx-reader.tests.js index a25d76e..f353930 100644 --- a/test/docx/docx-reader.tests.js +++ b/test/docx/docx-reader.tests.js @@ -48,7 +48,7 @@ test("when document.xml is not present then document is found using _rels/.rels" var relationships = xml.element("r:Relationships", {}, [ xml.element("r:Relationship", { "Type": "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", - "Target": "word/document2.xml" + "Target": "/word/document2.xml" }) ]); |
