forked from sheetjs/sheetjs
SheetJS
f335d310ac
- dateNF option for default date format override - general format renders undefined/null as empty string - ignore text elements when searching for decimal point - bubble negative sign to the front when format starts with text - fixes for eslint + closure - updated frac to 1.0.6 Issues: - fixes #10 h/t @adamgundy @SegFaultx64 @RichardCzechowski - fixes #15 h/t @wilg - fixes #25 h/t @dougschiller - fixes #26 h/t @rjmcguire
30 lines
1.5 KiB
JavaScript
30 lines
1.5 KiB
JavaScript
function write_num_cm2(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{
|
|
var idx = fmt.length - 1;
|
|
while(fmt.charCodeAt(idx-1) === 44) --idx;
|
|
return write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));
|
|
}
|
|
function write_num_pct2(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{
|
|
var sfmt = fmt.replace(pct1,""), mul = fmt.length - sfmt.length;
|
|
return write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill("%",mul);
|
|
}
|
|
function write_num_exp2(fmt/*:string*/, val/*:number*/)/*:string*/{
|
|
var o/*:string*/;
|
|
var idx = fmt.indexOf("E") - fmt.indexOf(".") - 1;
|
|
if(fmt.match(/^#+0.0E\+0$/)) {
|
|
var period = fmt.indexOf("."); if(period === -1) period=fmt.indexOf('E');
|
|
var ee = Math.floor(Math.log(Math.abs(val))*Math.LOG10E)%period;
|
|
if(ee < 0) ee += period;
|
|
o = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);
|
|
if(!o.match(/[Ee]/)) {
|
|
var fakee = Math.floor(Math.log(Math.abs(val))*Math.LOG10E);
|
|
if(o.indexOf(".") === -1) o = o.charAt(0) + "." + o.substr(1) + "E+" + (fakee - o.length+ee);
|
|
else o += "E+" + (fakee - ee);
|
|
o = o.replace(/\+-/,"-");
|
|
}
|
|
o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + "." + $3.substr(ee) + "E"; });
|
|
} else o = val.toExponential(idx);
|
|
if(fmt.match(/E\+00$/) && o.match(/e[+-]\d$/)) o = o.substr(0,o.length-1) + "0" + o.charAt(o.length-1);
|
|
if(fmt.match(/E\-/) && o.match(/e\+/)) o = o.replace(/e\+/,"e");
|
|
return o.replace("e","E");
|
|
}
|