forked from sheetjs/sheetjs
SheetJS
54b528eaed
The optional ODS module has been completely merged into xlsx.js and the corresponding scripts have been removed. The new xlsx.js file provides appropriate ODS exports, so fixing is a matter of removing ods.js refs.
86 lines
2.4 KiB
JavaScript
86 lines
2.4 KiB
JavaScript
function isval(x/*:?any*/)/*:boolean*/ { return x !== undefined && x !== null; }
|
|
|
|
function keys(o/*:any*/)/*:Array<any>*/ { return Object.keys(o); }
|
|
|
|
function evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {
|
|
var o = ([]/*:any*/), K = keys(obj);
|
|
for(var i = 0; i !== K.length; ++i) o[obj[K[i]][key]] = K[i];
|
|
return o;
|
|
}
|
|
|
|
function evert(obj/*:any*/)/*:EvertType*/ {
|
|
var o = ([]/*:any*/), K = keys(obj);
|
|
for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];
|
|
return o;
|
|
}
|
|
|
|
function evert_num(obj/*:any*/)/*:EvertNumType*/ {
|
|
var o = ([]/*:any*/), 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/*:any*/)/*:EvertArrType*/ {
|
|
var o/*:EvertArrType*/ = ([]/*:any*/), 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;
|
|
}
|
|
|
|
function datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {
|
|
var epoch = v.getTime();
|
|
if(date1904) epoch += 1462*24*60*60*1000;
|
|
return (epoch + 2209161600000) / (24 * 60 * 60 * 1000);
|
|
}
|
|
|
|
/* ISO 8601 Duration */
|
|
function parse_isodur(s) {
|
|
var sec = 0, mt = 0, time = false;
|
|
var m = s.match(/P([0-9\.]+Y)?([0-9\.]+M)?([0-9\.]+D)?T([0-9\.]+H)?([0-9\.]+M)?([0-9\.]+S)?/);
|
|
if(!m) throw new Error("|" + s + "| is not an ISO8601 Duration");
|
|
for(var i = 1; i != m.length; ++i) {
|
|
if(!m[i]) continue;
|
|
mt = 1;
|
|
if(i > 3) time = true;
|
|
switch(m[i].substr(m[i].length-1)) {
|
|
case 'Y':
|
|
throw new Error("Unsupported ISO Duration Field: " + m[i].substr(m[i].length-1));
|
|
case 'D': mt *= 24;
|
|
/* falls through */
|
|
case 'H': mt *= 60;
|
|
/* falls through */
|
|
case 'M':
|
|
if(!time) throw new Error("Unsupported ISO Duration Field: M");
|
|
else mt *= 60;
|
|
/* falls through */
|
|
case 'S': break;
|
|
}
|
|
sec += mt * parseInt(m[i], 10);
|
|
}
|
|
return sec;
|
|
}
|
|
|
|
function cc2str(arr/*:Array<number>*/)/*:string*/ {
|
|
var o = "";
|
|
for(var i = 0; i != arr.length; ++i) o += String.fromCharCode(arr[i]);
|
|
return o;
|
|
}
|
|
|
|
function str2cc(str) {
|
|
var o = [];
|
|
for(var i = 0; i != str.length; ++i) o.push(str.charCodeAt(i));
|
|
return o;
|
|
}
|
|
|
|
function dup(o/*:any*/)/*:any*/ {
|
|
if(typeof JSON != 'undefined') return JSON.parse(JSON.stringify(o));
|
|
if(typeof o != 'object' || !o) return o;
|
|
var out = {};
|
|
for(var k in o) if(o.hasOwnProperty(k)) out[k] = dup(o[k]);
|
|
return out;
|
|
}
|
|
|
|
function fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = ""; while(o.length < l) o+=c; return o; }
|