aboutsummaryrefslogtreecommitdiff
path: root/lib/docx/office-xml-reader.js
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-12-20 20:40:31 +0000
committerMichael Williamson <mike@zwobble.org>2015-12-20 20:40:31 +0000
commit1c582ffacd0e18d6be385285e54495945d8ec400 (patch)
tree3edb8960563ffdf0bffbce7399f19dccc29c13ca /lib/docx/office-xml-reader.js
parentcdf41f916220977b758d681e1e96436ff13daca8 (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.js23
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];
+ }
+}