aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-04-27 22:46:17 +0100
committerMichael Williamson <mike@zwobble.org>2013-04-27 22:46:17 +0100
commit6b040ed3f347e34fc89013ff7dc9268c733cee47 (patch)
tree252a401c07f61427cbdfd08c9adc9690d879e5b4 /lib
parent5610fd885e9255b9569b91b8fc73860d06d74ef4 (diff)
Move relationship reading into separate module
Diffstat (limited to 'lib')
-rw-r--r--lib/docx-reader.js19
-rw-r--r--lib/office-xml-reader.js4
-rw-r--r--lib/relationships-reader.js25
3 files changed, 31 insertions, 17 deletions
diff --git a/lib/docx-reader.js b/lib/docx-reader.js
index 179bd08..c96245a 100644
--- a/lib/docx-reader.js
+++ b/lib/docx-reader.js
@@ -8,6 +8,7 @@ var fs = require("fs");
var readXmlFromZipFile = require("./office-xml-reader").readXmlFromZipFile;
var documents = require("./documents");
var DocumentXmlReader = require("./document-xml-reader").DocumentXmlReader;
+var readRelationshipsFromZipFile = require("./relationships-reader").readRelationshipsFromZipFile;
var Result = require("./results").Result;
@@ -23,12 +24,10 @@ function read(options) {
return q.reject(new Error("Could not find file in options"));
}
return q.when(docxFile, function(docxFile) {
-
return q.all([
- readXmlFromZipFile(docxFile, "word/_rels/document.xml.rels"),
+ readRelationshipsFromZipFile(docxFile),
readXmlFromZipFile(docxFile, "word/document.xml")
- ]).spread(function(relationshipsXml, documentXml) {
- var relationships = relationshipsXml ? readRelationships(relationshipsXml) : {};
+ ]).spread(function(relationships, documentXml) {
var contentTypes = {
findContentType: function(path) {
return "image/png";
@@ -39,15 +38,3 @@ function read(options) {
});
});
}
-
-function readRelationships(relationshipsXml) {
- var relationships = {};
- relationshipsXml.root.children.forEach(function(child) {
- if (child.name === "{http://schemas.openxmlformats.org/package/2006/relationships}:Relationship") {
- relationships[child.attributes.Id] = {
- target: child.attributes.Target
- };
- }
- });
- return relationships;
-}
diff --git a/lib/office-xml-reader.js b/lib/office-xml-reader.js
index 78d1299..7aa8bab 100644
--- a/lib/office-xml-reader.js
+++ b/lib/office-xml-reader.js
@@ -1,3 +1,5 @@
+var q = require("q");
+
var xmlreader = require("./xmlreader");
@@ -22,6 +24,6 @@ function readXmlFromZipFile(docxFile, path) {
return docxFile.read(path, "utf-8")
.then(read);
} else {
- return null;
+ return q.resolve(null);
}
}
diff --git a/lib/relationships-reader.js b/lib/relationships-reader.js
new file mode 100644
index 0000000..fe6c7f1
--- /dev/null
+++ b/lib/relationships-reader.js
@@ -0,0 +1,25 @@
+var readXmlFromZipFile = require("./office-xml-reader").readXmlFromZipFile;
+
+
+exports.readRelationshipsFromZipFile = readRelationshipsFromZipFile;
+
+
+function readRelationshipsFromZipFile(file) {
+ return readXmlFromZipFile(file, "word/_rels/document.xml.rels")
+ .then(function(relationshipsXml) {
+ return relationshipsXml ? readRelationships(relationshipsXml) : {};
+ });
+}
+
+
+function readRelationships(relationshipsXml) {
+ var relationships = {};
+ relationshipsXml.root.children.forEach(function(child) {
+ if (child.name === "{http://schemas.openxmlformats.org/package/2006/relationships}:Relationship") {
+ relationships[child.attributes.Id] = {
+ target: child.attributes.Target
+ };
+ }
+ });
+ return relationships;
+}