forked from sheetjs/sheetjs
SheetJS
6bc24374b9
- parsexmltag and other hot functions now better optimized for v8 - monomorphic functions (different types -> different funcs) - more efficient decode_range implementation when source is trusted - regular expressions cached and simplified without breaking correctness - more efficient utf8 techniques when available - XLSX: large functions broken down into sub-functions (e.g. `parse_ws_xml`) - XLSB: avoid unnecessary binds - XLSB: assume no exotic codepage exists (no one else tries to write XLSB) - demo exposes rABS / worker / transferable options - more tests - jszip updated to 2.3.0 - SSF updated to 0.8.1 - codepage updated to 1.3.1
44 lines
977 B
JavaScript
44 lines
977 B
JavaScript
function isval(x) { return x !== undefined && x !== null; }
|
|
|
|
function keys(o) { return Object.keys(o); }
|
|
|
|
function evert_key(obj, key) {
|
|
var o = [], K = keys(obj);
|
|
for(var i = 0; i !== K.length; ++i) o[obj[K[i]][key]] = K[i];
|
|
return o;
|
|
}
|
|
|
|
function evert(obj) {
|
|
var o = [], K = keys(obj);
|
|
for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];
|
|
return o;
|
|
}
|
|
|
|
function evert_num(obj) {
|
|
var o = [], K = keys(obj);
|
|
for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);
|
|
return o;
|
|
}
|
|
|
|
function evert_arr(obj) {
|
|
var o = [], K = keys(obj);
|
|
for(var i = 0; i !== K.length; ++i) {
|
|
if(o[obj[K[i]]] == null) o[obj[K[i]]] = [];
|
|
o[obj[K[i]]].push(K[i]);
|
|
}
|
|
return o;
|
|
}
|
|
|
|
/* TODO: date1904 logic */
|
|
function datenum(v, date1904) {
|
|
if(date1904) v+=1462;
|
|
var epoch = Date.parse(v);
|
|
return (epoch + 2209161600000) / (24 * 60 * 60 * 1000);
|
|
}
|
|
|
|
function cc2str(arr) {
|
|
var o = "";
|
|
for(var i = 0; i != arr.length; ++i) o += String.fromCharCode(arr[i]);
|
|
return o;
|
|
}
|