Comparing version 0.5.7 to 0.5.8
{ | ||
"name": "ssf", | ||
"version": "0.5.7", | ||
"version": "0.5.8", | ||
"author": "SheetJS", | ||
@@ -5,0 +5,0 @@ "description": "pure-JS library to format data using ECMA-376 spreadsheet Format Codes", |
33
ssf.js
@@ -8,3 +8,3 @@ /* ssf.js (C) 2013-2014 SheetJS -- http://sheetjs.com */ | ||
function rpad(v,d,c){var t=String(v);return t.length>=d?t:(t+fill(c||0,d-t.length));} | ||
SSF.version = '0.5.7'; | ||
SSF.version = '0.5.8'; | ||
/* Options */ | ||
@@ -116,3 +116,3 @@ var opts_fmt = {}; | ||
if(typeof v === 'string') return v; | ||
throw "unsupported value in General format: " + v; | ||
throw new Error("unsupported value in General format: " + v); | ||
}; | ||
@@ -234,3 +234,3 @@ SSF._general = general_fmt; | ||
if(fmt[0] === "$") return "$"+write_num(type,fmt.substr(fmt[1]==' '?2:1),val); | ||
var r, ff, aval = val < 0 ? -val : val, sign = val < 0 ? "-" : ""; | ||
var r, rr, ff, aval = val < 0 ? -val : val, sign = val < 0 ? "-" : ""; | ||
if((r = fmt.match(/# (\?+)([ ]?)\/([ ]?)(\d+)/))) { | ||
@@ -248,4 +248,13 @@ var den = Number(r[4]), rnd = Math.round(aval * den), base = Math.floor(rnd/den); | ||
} | ||
if((r = fmt.match(/^(0*)\.(#*)$/))) { | ||
o = Math.round(val*Math.pow(10,r[2].length)); | ||
return String(o * Math.pow(10,-r[2].length)).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^([-]?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":"."); | ||
} | ||
if((r = fmt.match(/^#,##0([.]?)$/))) return sign + commaify(String(Math.round(aval))); | ||
if((r = fmt.match(/^#,##0\.([#0]*0)$/))) { | ||
rr = Math.round((val-Math.floor(val))*Math.pow(10,r[1].length)); | ||
return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(rr,r[1].length,0); | ||
} | ||
if((r = fmt.match(/^# ([?]+)([ ]?)\/([ ]?)([?]+)/))) { | ||
var rr = Math.min(Math.max(r[1].length, r[4].length),7); | ||
rr = Math.min(Math.max(r[1].length, r[4].length),7); | ||
ff = frac(aval, Math.pow(10,rr)-1, true); | ||
@@ -259,12 +268,2 @@ return sign + (ff[0]||(ff[1] ? "" : "0")) + " " + (ff[1] ? pad(ff[1],rr," ") + r[2] + "/" + r[3] + rpad(ff[2],rr," "): fill(" ", 2*rr+1 + r[2].length + r[3].length)); | ||
case "#,###": var x = commaify(String(Math.round(aval))); return x !== "0" ? sign + x : ""; | ||
case "#,##0": return sign + commaify(String(Math.round(aval))); | ||
case "#,##0.0": r = Math.round((val-Math.floor(val))*10); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,1,"0"); | ||
case "#,##0.00": r = Math.round((val-Math.floor(val))*100); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,2,"0"); | ||
case "#,##0.000": r = Math.round((val-Math.floor(val))*1000); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,3,0); | ||
case "#,##0.0000": r = Math.round((val-Math.floor(val))*10000); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,4,0); | ||
case "#,##0.00000": r = Math.round((val-Math.floor(val))*Math.pow(10,5)); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,5,0); | ||
case "#,##0.000000": r = Math.round((val-Math.floor(val))*Math.pow(10,6)); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,6,0); | ||
case "#,##0.0000000": r = Math.round((val-Math.floor(val))*Math.pow(10,7)); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,7,0); | ||
case "#,##0.00000000": r = Math.round((val-Math.floor(val))*Math.pow(10,8)); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,8,0); | ||
case "#,##0.000000000": r = Math.round((val-Math.floor(val))*Math.pow(10,9)); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,9,0); | ||
default: | ||
@@ -286,3 +285,3 @@ } | ||
out.push(fmt.slice(j)); | ||
if(in_str !=-1) throw "Format |" + fmt + "| unterminated string at " + in_str; | ||
if(in_str !=-1) throw new Error("Format |" + fmt + "| unterminated string at " + in_str); | ||
return out; | ||
@@ -300,3 +299,3 @@ } | ||
if(fmt.substr(i, i+6).toLowerCase() !== "general") | ||
throw 'unrecognized character ' + fmt[i] + ' in ' + fmt; | ||
throw new Error('unrecognized character ' + fmt[i] + ' in ' +fmt); | ||
out.push({t:'G',v:'General'}); i+=7; break; | ||
@@ -344,3 +343,3 @@ case '"': /* Literal text */ | ||
/* Numbers */ | ||
case '0': case '#': | ||
case '0': case '#': case '.': | ||
o = c; while("0#?.,E+-%".indexOf(c=fmt[++i]) > -1) o += c; | ||
@@ -347,0 +346,0 @@ out.push({t:'n', v:o}); break; |
33
ssf.md
@@ -79,3 +79,3 @@ # SSF | ||
out.push(fmt.slice(j)); | ||
if(in_str !=-1) throw "Format |" + fmt + "| unterminated string at " + in_str; | ||
if(in_str !=-1) throw new Error("Format |" + fmt + "| unterminated string at " + in_str); | ||
return out; | ||
@@ -172,3 +172,3 @@ } | ||
``` | ||
throw "unsupported value in General format: " + v; | ||
throw new Error("unsupported value in General format: " + v); | ||
}; | ||
@@ -418,3 +418,3 @@ SSF._general = general_fmt; | ||
```js>tmp/60_number.js | ||
var r, ff, aval = val < 0 ? -val : val, sign = val < 0 ? "-" : ""; | ||
var r, rr, ff, aval = val < 0 ? -val : val, sign = val < 0 ? "-" : ""; | ||
if((r = fmt.match(/# (\?+)([ ]?)\/([ ]?)(\d+)/))) { | ||
@@ -437,2 +437,11 @@ var den = Number(r[4]), rnd = Math.round(aval * den), base = Math.floor(rnd/den); | ||
} | ||
if((r = fmt.match(/^(0*)\.(#*)$/))) { | ||
o = Math.round(val*Math.pow(10,r[2].length)); | ||
return String(o * Math.pow(10,-r[2].length)).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^([-]?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":"."); | ||
} | ||
if((r = fmt.match(/^#,##0([.]?)$/))) return sign + commaify(String(Math.round(aval))); | ||
if((r = fmt.match(/^#,##0\.([#0]*0)$/))) { | ||
rr = Math.round((val-Math.floor(val))*Math.pow(10,r[1].length)); | ||
return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(rr,r[1].length,0); | ||
} | ||
``` | ||
@@ -444,3 +453,3 @@ | ||
if((r = fmt.match(/^# ([?]+)([ ]?)\/([ ]?)([?]+)/))) { | ||
var rr = Math.min(Math.max(r[1].length, r[4].length),7); | ||
rr = Math.min(Math.max(r[1].length, r[4].length),7); | ||
ff = frac(aval, Math.pow(10,rr)-1, true); | ||
@@ -459,12 +468,2 @@ return sign + (ff[0]||(ff[1] ? "" : "0")) + " " + (ff[1] ? pad(ff[1],rr," ") + r[2] + "/" + r[3] + rpad(ff[2],rr," "): fill(" ", 2*rr+1 + r[2].length + r[3].length)); | ||
case "#,###": var x = commaify(String(Math.round(aval))); return x !== "0" ? sign + x : ""; | ||
case "#,##0": return sign + commaify(String(Math.round(aval))); | ||
case "#,##0.0": r = Math.round((val-Math.floor(val))*10); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,1,"0"); | ||
case "#,##0.00": r = Math.round((val-Math.floor(val))*100); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,2,"0"); | ||
case "#,##0.000": r = Math.round((val-Math.floor(val))*1000); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,3,0); | ||
case "#,##0.0000": r = Math.round((val-Math.floor(val))*10000); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,4,0); | ||
case "#,##0.00000": r = Math.round((val-Math.floor(val))*Math.pow(10,5)); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,5,0); | ||
case "#,##0.000000": r = Math.round((val-Math.floor(val))*Math.pow(10,6)); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,6,0); | ||
case "#,##0.0000000": r = Math.round((val-Math.floor(val))*Math.pow(10,7)); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,7,0); | ||
case "#,##0.00000000": r = Math.round((val-Math.floor(val))*Math.pow(10,8)); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,8,0); | ||
case "#,##0.000000000": r = Math.round((val-Math.floor(val))*Math.pow(10,9)); return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(r,9,0); | ||
``` | ||
@@ -498,3 +497,3 @@ | ||
if(fmt.substr(i, i+6).toLowerCase() !== "general") | ||
throw 'unrecognized character ' + fmt[i] + ' in ' + fmt; | ||
throw new Error('unrecognized character ' + fmt[i] + ' in ' +fmt); | ||
out.push({t:'G',v:'General'}); i+=7; break; | ||
@@ -613,3 +612,3 @@ ``` | ||
/* Numbers */ | ||
case '0': case '#': | ||
case '0': case '#': case '.': | ||
o = c; while("0#?.,E+-%".indexOf(c=fmt[++i]) > -1) o += c; | ||
@@ -1008,3 +1007,3 @@ out.push({t:'n', v:o}); break; | ||
"name": "ssf", | ||
"version": "0.5.7", | ||
"version": "0.5.8", | ||
"author": "SheetJS", | ||
@@ -1011,0 +1010,0 @@ "description": "pure-JS library to format data using ECMA-376 spreadsheet Format Codes", |
@@ -48,3 +48,4 @@ [ | ||
["123", [0.7, "123"], [0, "123"], ["sheetjs", "sheetjs"]], | ||
["0.##", [1,"1."], [-1,"-1."], [0, "0."], [1.1, "1.1"], [-1.2, "-1.2"], [1000000000000.01, "1000000000000.01"], [-1000.01, "-1000.01"], [0.1, "0.1"], [1.007, "1.01"], [-1.008, "-1.01"]], | ||
["\"foo\";\"bar\";\"baz\";\"qux\";\"foobar\"", [1], [0], [-1], ["sheetjs"]] | ||
] |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
103930