diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-04-27 22:46:17 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-04-27 22:46:17 +0100 |
| commit | 6b040ed3f347e34fc89013ff7dc9268c733cee47 (patch) | |
| tree | 252a401c07f61427cbdfd08c9adc9690d879e5b4 /lib | |
| parent | 5610fd885e9255b9569b91b8fc73860d06d74ef4 (diff) | |
Move relationship reading into separate module
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/docx-reader.js | 19 | ||||
| -rw-r--r-- | lib/office-xml-reader.js | 4 | ||||
| -rw-r--r-- | lib/relationships-reader.js | 25 |
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; +} |
