From 6b040ed3f347e34fc89013ff7dc9268c733cee47 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 27 Apr 2013 22:46:17 +0100 Subject: Move relationship reading into separate module --- lib/docx-reader.js | 19 +++---------------- lib/office-xml-reader.js | 4 +++- lib/relationships-reader.js | 25 +++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 17 deletions(-) create mode 100644 lib/relationships-reader.js (limited to 'lib') 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; +} -- cgit v1.2.3