aboutsummaryrefslogtreecommitdiff
path: root/lib/zipfile.js
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2017-01-23 20:23:03 +0000
committerMichael Williamson <mike@zwobble.org>2017-01-23 20:23:03 +0000
commite81f83906d26ace7c38b0b7b24e0d5f98da35172 (patch)
tree260965d0157d61bd34310181739154e7862f16d7 /lib/zipfile.js
parent1e85fcd0539d71484a4b5f44e1f0ccd0f48a90ec (diff)
Handle base-relative URIs entirely in entry name generation
Diffstat (limited to 'lib/zipfile.js')
-rw-r--r--lib/zipfile.js24
1 files changed, 8 insertions, 16 deletions
diff --git a/lib/zipfile.js b/lib/zipfile.js
index efe519c..9542ae1 100644
--- a/lib/zipfile.js
+++ b/lib/zipfile.js
@@ -3,16 +3,16 @@ var JSZip = require("jszip");
var promises = require("./promises");
exports.openArrayBuffer = openArrayBuffer;
-exports.joinZipPath = joinZipPath;
+exports.uriToZipEntryName = uriToZipEntryName;
function openArrayBuffer(arrayBuffer) {
var zipFile = new JSZip(arrayBuffer);
function exists(name) {
- return zipFile.file(normaliseName(name)) !== null;
+ return zipFile.file(name) !== null;
}
function read(name, encoding) {
- var array = zipFile.file(normaliseName(name)).asUint8Array();
+ var array = zipFile.file(name).asUint8Array();
var buffer = new Buffer(array);
if (encoding) {
return promises.when(buffer.toString(encoding));
@@ -22,7 +22,7 @@ function openArrayBuffer(arrayBuffer) {
}
function write(name, contents) {
- zipFile.file(normaliseName(name), contents);
+ zipFile.file(name, contents);
}
function toBuffer() {
@@ -37,20 +37,12 @@ function openArrayBuffer(arrayBuffer) {
};
}
-function normaliseName(name) {
- if (name.charAt(0) === "/") {
- return name.substr(1);
- } else {
- return name;
- }
-}
-
-function joinZipPath(first, second) {
- if (second.charAt(0) === "/") {
- return second;
+function uriToZipEntryName(base, uri) {
+ if (uri.charAt(0) === "/") {
+ return uri.substr(1);
} else {
// In general, we should check first and second for trailing and leading slashes,
// but in our specific case this seems to be sufficient
- return first + "/" + second;
+ return base + "/" + uri;
}
}