aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2014-03-18 14:24:56 +0000
committerMichael Williamson <mike@zwobble.org>2014-03-18 14:24:56 +0000
commit800b14eed0c909c93a3271191ac93ad5a2d2057f (patch)
tree97d326d84fd30c188377314bbdf23ca9fcb7a1db /lib
parent45f302766a3a5ca99338fd8e5fef07dec42c0e56 (diff)
Move reading of actual docx files into docx-reader
Diffstat (limited to 'lib')
-rw-r--r--lib/docx/content-types-reader.js22
-rw-r--r--lib/docx/docx-reader.js33
-rw-r--r--lib/docx/numbering-xml.js11
-rw-r--r--lib/docx/relationships-reader.js13
4 files changed, 37 insertions, 42 deletions
diff --git a/lib/docx/content-types-reader.js b/lib/docx/content-types-reader.js
index 0a74eb9..c8a28a4 100644
--- a/lib/docx/content-types-reader.js
+++ b/lib/docx/content-types-reader.js
@@ -1,16 +1,11 @@
-var readXmlFromZipFile = require("./office-xml-reader").readXmlFromZipFile;
-
-exports.readContentTypesFromZipFile = readContentTypesFromZipFile;
exports.readContentTypesFromXml = readContentTypesFromXml;
+exports.defaultContentTypes = {
+ findContentType: function(path) {
+ return null;
+ }
+};
-function readContentTypesFromZipFile(file) {
- return readXmlFromZipFile(file, "[Content_Types].xml")
- .then(function(xml) {
- return xml ? readContentTypesFromXml(xml) : defaultContentTypes;
- });
-}
-
function readContentTypesFromXml(xml) {
var extensionDefaults = {};
var overrides = {};
@@ -41,10 +36,3 @@ function readContentTypesFromXml(xml) {
}
}
}
-
-
-var defaultContentTypes = {
- findContentType: function(path) {
- return null;
- }
-};
diff --git a/lib/docx/docx-reader.js b/lib/docx/docx-reader.js
index 787c0e0..82a647c 100644
--- a/lib/docx/docx-reader.js
+++ b/lib/docx/docx-reader.js
@@ -6,9 +6,9 @@ var unzip = require("../unzip");
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 readContentTypesFromZipFile = require("./content-types-reader").readContentTypesFromZipFile;
-var readNumberingFromZipFile = require("./numbering-xml").readNumberingFromZipFile;
+var relationshipsReader = require("./relationships-reader");
+var contentTypesReader = require("./content-types-reader");
+var numberingXml = require("./numbering-xml");
function read(options) {
@@ -25,3 +25,30 @@ function read(options) {
});
});
}
+
+function xmlFileReader(options) {
+ return function(zipFile) {
+ return readXmlFromZipFile(zipFile, options.filename)
+ .then(function(element) {
+ return element ? options.readElement(element) : options.defaultValue;
+ });
+ };
+}
+
+var readContentTypesFromZipFile = xmlFileReader({
+ filename: "[Content_Types].xml",
+ readElement: contentTypesReader.readContentTypesFromXml,
+ defaultValue: contentTypesReader.defaultContentTypes
+});
+
+var readRelationshipsFromZipFile = xmlFileReader({
+ filename: "word/_rels/document.xml.rels",
+ readElement: relationshipsReader.readRelationships,
+ defaultValue: {}
+});
+
+var readNumberingFromZipFile = xmlFileReader({
+ filename: "word/numbering.xml",
+ readElement: numberingXml.readNumberingXml,
+ defaultValue: numberingXml.defaultNumbering
+});
diff --git a/lib/docx/numbering-xml.js b/lib/docx/numbering-xml.js
index 7e64dc2..7a3f4ce 100644
--- a/lib/docx/numbering-xml.js
+++ b/lib/docx/numbering-xml.js
@@ -1,15 +1,6 @@
-var readXmlFromZipFile = require("./office-xml-reader").readXmlFromZipFile;
-
exports.readNumberingXml = readNumberingXml;
-exports.readNumberingFromZipFile = readNumberingFromZipFile;
exports.Numbering = Numbering;
-
-function readNumberingFromZipFile(file) {
- return readXmlFromZipFile(file, "word/numbering.xml")
- .then(function(xml) {
- return xml ? readNumberingXml(xml) : new Numbering({});
- });
-}
+exports.defaultNumbering = new Numbering({});
function Numbering(nums) {
return {
diff --git a/lib/docx/relationships-reader.js b/lib/docx/relationships-reader.js
index fe6c7f1..7cae534 100644
--- a/lib/docx/relationships-reader.js
+++ b/lib/docx/relationships-reader.js
@@ -1,15 +1,4 @@
-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) : {};
- });
-}
+exports.readRelationships = readRelationships;
function readRelationships(relationshipsXml) {