summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2018-01-26 23:21:49 +0000
committerMichael Williamson <mike@zwobble.org>2018-01-26 23:21:49 +0000
commit9196e8bc6f2ff2c59a9b4fde4813e7bc26b8c23d (patch)
treec42bfa3fb88f2348018c63f7dc1a64299a666355 /lib
parentf5fbc6e4aface5c6c9537b38d1650b0d37e3cbc1 (diff)
Extract joinPath and splitPath for zip files
Diffstat (limited to 'lib')
-rw-r--r--lib/docx/docx-reader.js6
-rw-r--r--lib/zipfile.js20
2 files changed, 23 insertions, 3 deletions
diff --git a/lib/docx/docx-reader.js b/lib/docx/docx-reader.js
index beade38..cbeaccd 100644
--- a/lib/docx/docx-reader.js
+++ b/lib/docx/docx-reader.js
@@ -6,6 +6,7 @@ var path = require("path");
var promises = require("../promises");
var documents = require("../documents");
var Result = require("../results").Result;
+var zipfile = require("../zipfile");
var readXmlFromZipFile = require("./office-xml-reader").readXmlFromZipFile;
var createBodyReader = require("./body-reader").createBodyReader;
@@ -151,9 +152,8 @@ function readXmlFileWithBody(filename, options, func) {
}
function relationshipsFilename(filename) {
- var parts = filename.split("/");
- return parts.slice(0, parts.length - 1).join("/") +
- "/_rels/" + parts[parts.length - 1] + ".rels";
+ var split = zipfile.splitPath(filename);
+ return zipfile.joinPath(split.dirname, "_rels", split.basename + ".rels");
}
var readContentTypesFromZipFile = xmlFileReader({
diff --git a/lib/zipfile.js b/lib/zipfile.js
index 7c534c7..ae51310 100644
--- a/lib/zipfile.js
+++ b/lib/zipfile.js
@@ -3,6 +3,8 @@ var JSZip = require("jszip");
var promises = require("./promises");
exports.openArrayBuffer = openArrayBuffer;
+exports.splitPath = splitPath;
+exports.joinPath = joinPath;
function openArrayBuffer(arrayBuffer) {
var zipFile = new JSZip(arrayBuffer);
@@ -35,3 +37,21 @@ function openArrayBuffer(arrayBuffer) {
toBuffer: toBuffer
};
}
+
+function splitPath(path) {
+ var lastIndex = path.lastIndexOf("/");
+ if (lastIndex === -1) {
+ return {dirname: "", basename: path};
+ } else {
+ return {
+ dirname: path.substring(0, lastIndex),
+ basename: path.substring(lastIndex + 1)
+ };
+ }
+}
+
+function joinPath() {
+ return Array.prototype.filter.call(arguments, function(path) {
+ return path;
+ }).join("/");
+}