diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-12-20 20:40:31 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-12-20 20:40:31 +0000 |
| commit | 1c582ffacd0e18d6be385285e54495945d8ec400 (patch) | |
| tree | 3edb8960563ffdf0bffbce7399f19dccc29c13ca /lib/docx/office-xml-reader.js | |
| parent | cdf41f916220977b758d681e1e96436ff13daca8 (diff) | |
Always use mc:Fallback when reading mc:AlternateContent elements
Diffstat (limited to 'lib/docx/office-xml-reader.js')
| -rw-r--r-- | lib/docx/office-xml-reader.js | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/docx/office-xml-reader.js b/lib/docx/office-xml-reader.js index 93d1d34..f9e0b8b 100644 --- a/lib/docx/office-xml-reader.js +++ b/lib/docx/office-xml-reader.js @@ -1,7 +1,10 @@ +var _ = require("underscore"); + var promises = require("../promises"); var xml = require("../xml"); +exports.read = read; exports.readXmlFromZipFile = readXmlFromZipFile; var xmlNamespaceMap = { @@ -18,7 +21,11 @@ var xmlNamespaceMap = { function read(xmlString) { - return xml.readString(xmlString, xmlNamespaceMap); + return xml.readString(xmlString, xmlNamespaceMap) + .then(function(document) { + document.root = collapseAlternateContent(document.root)[0]; + return document; + }); } @@ -36,3 +43,17 @@ function readXmlFromZipFile(docxFile, path) { function stripUtf8Bom(xmlString) { return xmlString.replace(/^\uFEFF/g, ''); } + + +function collapseAlternateContent(node) { + if (node.type === "element") { + if (node.name === "mc:AlternateContent") { + return node.first("mc:Fallback").children; + } else { + node.children = _.flatten(node.children.map(collapseAlternateContent, true)); + return [node]; + } + } else { + return [node]; + } +} |
