diff options
| author | Michael Williamson <mike@zwobble.org> | 2017-01-23 20:23:03 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2017-01-23 20:23:03 +0000 |
| commit | e81f83906d26ace7c38b0b7b24e0d5f98da35172 (patch) | |
| tree | 260965d0157d61bd34310181739154e7862f16d7 /lib/zipfile.js | |
| parent | 1e85fcd0539d71484a4b5f44e1f0ccd0f48a90ec (diff) | |
Handle base-relative URIs entirely in entry name generation
Diffstat (limited to 'lib/zipfile.js')
| -rw-r--r-- | lib/zipfile.js | 24 |
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; } } |
