1
forked from sheetjs/sheetjs
sheetjs/bits/21_ziputils.js
SheetJS 86d6a093f0 version bump 0.8.2: ODS and cleanup
- README and example cleanup
- basic XLSB and ODS write support
- flow typecheck for ODS file
  Note: xlsx.js flow fails: https://github.com/facebook/flow/issues/380
- exposed jszip compression (fixes , closes )

README issues:

|  id  | author         | comment                                      |
|-----:|:---------------|:---------------------------------------------|
|  | @sao93859      | closes                                   |
|  | @alexanderchan | closes  corrected examples               |
|  | @cskaandorp    | changed saveAs example to match write tests  |
|  | @dskrvk        | added note about s2roa h/t @LeonardoPatignio |
|  | @jimmywarting  | closes  adapted rABS examples with rAAS  |

ODS file format issues:

|  id  | author         | comment                                      |
|-----:|:---------------|:---------------------------------------------|
|  | @user4815162342| closes  h/t @ziacik                      |
|  | @paulproteus   | closes  rudimentary ODS write support    |
|  | @ziacik        | closes                                   |
|  | @ziacik        | closes  use JSON when available          |
|  | @ziacik        | closes                                   |
|  | @think01       | closes                                   |
|  | @mdamt         | closes  duplicate cells should be copied |
|  | @RB-Lab        | closes                                   |
|  | @lgodard       | closes  thanks to other changes          |
2017-02-03 15:50:45 -05:00

45 lines
1.6 KiB
JavaScript

function getdata(data) {
if(!data) return null;
if(data.name.substr(-4) === ".bin") {
if(data.data) return char_codes(data.data);
if(data.asNodeBuffer && has_buf) return data.asNodeBuffer();
if(data._data && data._data.getContent) return Array.prototype.slice.call(data._data.getContent());
} else {
if(data.data) return data.name.substr(-4) !== ".bin" ? debom_xml(data.data) : char_codes(data.data);
if(data.asNodeBuffer && has_buf) return debom_xml(data.asNodeBuffer().toString('binary'));
if(data.asBinary) return debom_xml(data.asBinary());
if(data._data && data._data.getContent) return debom_xml(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));
}
return null;
}
function safegetzipfile(zip, file) {
var f = file; if(zip.files[f]) return zip.files[f];
f = file.toLowerCase(); if(zip.files[f]) return zip.files[f];
f = f.replace(/\//g,'\\'); if(zip.files[f]) return zip.files[f];
return null;
}
function getzipfile(zip, file) {
var o = safegetzipfile(zip, file);
if(o == null) throw new Error("Cannot find file " + file + " in zip");
return o;
}
function getzipdata(zip, file, safe/*:?boolean*/) {
if(!safe) return getdata(getzipfile(zip, file));
if(!file) return null;
try { return getzipdata(zip, file); } catch(e) { return null; }
}
/*:: declare var JSZip:any; */
var _fs, jszip;
if(typeof JSZip !== 'undefined') jszip = JSZip;
if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
if(has_buf && typeof jszip === 'undefined') jszip = require('js'+'zip');
if(typeof jszip === 'undefined') jszip = require('./js'+'zip').JSZip;
_fs = require('f'+'s');
}
}