forked from sheetjs/sheetjs
version bump 0.5.4: empty text is empty
This commit is contained in:
parent
216fe0459e
commit
e5fe385335
@ -6,5 +6,5 @@ before_install:
|
||||
- "npm install -g mocha"
|
||||
- "npm install blanket"
|
||||
- "npm install coveralls mocha-lcov-reporter"
|
||||
after_success:
|
||||
after_success:
|
||||
- "make coveralls"
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ssf",
|
||||
"version": "0.5.3",
|
||||
"version": "0.5.4",
|
||||
"author": "SheetJS",
|
||||
"description": "pure-JS library to format data using ECMA-376 spreadsheet Format Codes",
|
||||
"keywords": [ "format", "sprintf", "spreadsheet" ],
|
||||
|
7
ssf.js
7
ssf.js
@ -5,7 +5,7 @@ var _strrev = function(x) { return String(x).split("").reverse().join("");};
|
||||
function fill(c,l) { return new Array(l+1).join(c); }
|
||||
function pad(v,d,c){var t=String(v);return t.length>=d?t:(fill(c||0,d-t.length)+t);}
|
||||
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.3';
|
||||
SSF.version = '0.5.4';
|
||||
/* Options */
|
||||
var opts_fmt = {};
|
||||
function fixopts(o){for(var y in opts_fmt) if(o[y]===undefined) o[y]=opts_fmt[y];}
|
||||
@ -235,11 +235,11 @@ var write_num = function(type, fmt, val) {
|
||||
}
|
||||
if(fmt.match(/^00+$/)) return (val<0?"-":"")+pad(Math.round(aval),fmt.length);
|
||||
if(fmt.match(/^[#?]+$/)) return String(Math.round(val)).replace(/^0$/,"");
|
||||
if(r = fmt.match(/^#*0+\.(0+)/)) {
|
||||
if((r = fmt.match(/^#*0+\.(0+)/))) {
|
||||
o = Math.round(val * Math.pow(10,r[1].length));
|
||||
return String(o/Math.pow(10,r[1].length)).replace(/^([^\.]+)$/,"$1."+r[1]).replace(/\.$/,"."+r[1]).replace(/\.([0-9]*)$/,function($$, $1) { return "." + $1 + fill("0", r[1].length-$1.length); });
|
||||
}
|
||||
if(r = fmt.match(/^# ([?]+)([ ]?)\/([ ]?)([?]+)/)) {
|
||||
if((r = fmt.match(/^# ([?]+)([ ]?)\/([ ]?)([?]+)/))) {
|
||||
var rr = Math.min(Math.max(r[1].length, r[4].length),7);
|
||||
ff = frac(aval, Math.pow(10,rr)-1, true);
|
||||
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));
|
||||
@ -402,6 +402,7 @@ var format = function format(fmt,v,o) {
|
||||
var f = choose_fmt(fmt, v, o);
|
||||
if(f[1].toLowerCase() === "general") return general_fmt(v,o);
|
||||
if(v === true) v = "TRUE"; if(v === false) v = "FALSE";
|
||||
if(v === "" || typeof v === "undefined") return "";
|
||||
return eval_fmt(f[1], v, o, f[0]);
|
||||
};
|
||||
|
||||
|
15
ssf.md
15
ssf.md
@ -420,7 +420,7 @@ A few special general cases can be handled in a very dumb manner:
|
||||
```
|
||||
if(fmt.match(/^00+$/)) return (val<0?"-":"")+pad(Math.round(aval),fmt.length);
|
||||
if(fmt.match(/^[#?]+$/)) return String(Math.round(val)).replace(/^0$/,"");
|
||||
if(r = fmt.match(/^#*0+\.(0+)/)) {
|
||||
if((r = fmt.match(/^#*0+\.(0+)/))) {
|
||||
o = Math.round(val * Math.pow(10,r[1].length));
|
||||
return String(o/Math.pow(10,r[1].length)).replace(/^([^\.]+)$/,"$1."+r[1]).replace(/\.$/,"."+r[1]).replace(/\.([0-9]*)$/,function($$, $1) { return "." + $1 + fill("0", r[1].length-$1.length); });
|
||||
}
|
||||
@ -429,7 +429,7 @@ A few special general cases can be handled in a very dumb manner:
|
||||
The frac helper function is used for fraction formats (defined below).
|
||||
|
||||
```
|
||||
if(r = fmt.match(/^# ([?]+)([ ]?)\/([ ]?)([?]+)/)) {
|
||||
if((r = fmt.match(/^# ([?]+)([ ]?)\/([ ]?)([?]+)/))) {
|
||||
var rr = Math.min(Math.max(r[1].length, r[4].length),7);
|
||||
ff = frac(aval, Math.pow(10,rr)-1, true);
|
||||
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));
|
||||
@ -576,7 +576,7 @@ the HH/hh jazz. TODO: investigate this further.
|
||||
out.push(q); lst = c; break;
|
||||
```
|
||||
|
||||
Conditional and color blocks should be handled at one point (TODO). The
|
||||
Conditional and color blocks should be handled at one point (TODO). The
|
||||
pseudo-type `Z` is used to capture absolute time blocks:
|
||||
|
||||
```
|
||||
@ -770,7 +770,7 @@ function choose_fmt(fmt, v, o) {
|
||||
switch(fmt.length) {
|
||||
```
|
||||
|
||||
In the case of one format, if it contains an "@" then it is a text format.
|
||||
In the case of one format, if it contains an "@" then it is a text format.
|
||||
There is a big TODO here regarding how to best handle this case.
|
||||
|
||||
```
|
||||
@ -813,7 +813,10 @@ The boolean TRUE and FALSE are formatted as if they are the uppercase text:
|
||||
if(v === true) v = "TRUE"; if(v === false) v = "FALSE";
|
||||
```
|
||||
|
||||
Empty string should always emit empty, even if there are other characters:
|
||||
|
||||
```
|
||||
if(v === "" || typeof v === "undefined") return "";
|
||||
return eval_fmt(f[1], v, o, f[0]);
|
||||
};
|
||||
|
||||
@ -950,7 +953,7 @@ coveralls:
|
||||
```json>package.json
|
||||
{
|
||||
"name": "ssf",
|
||||
"version": "0.5.3",
|
||||
"version": "0.5.4",
|
||||
"author": "SheetJS",
|
||||
"description": "pure-JS library to format data using ECMA-376 spreadsheet Format Codes",
|
||||
"keywords": [ "format", "sprintf", "spreadsheet" ],
|
||||
@ -994,7 +997,7 @@ before_install:
|
||||
- "npm install -g mocha"
|
||||
- "npm install blanket"
|
||||
- "npm install coveralls mocha-lcov-reporter"
|
||||
after_success:
|
||||
after_success:
|
||||
- "make coveralls"
|
||||
```
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
["r", [1], [-1], [0], ["TODO","TODO"]],
|
||||
["((;@", [1], [-1], [0], ["TODO","TODO"]],
|
||||
["\\r", [1, "r"], [-1, "r"], [0, "r"], ["TODO","TODO"]],
|
||||
["_($* #,##0_);_($* (#,##0);_($* \"-\"_);_(@_)", [1, " $1 "], [-1, " $(1)"], [0," $- "], ["TODO", " TODO "]],
|
||||
["_($* #,##0_);_($* (#,##0);_($* \"-\"_);_(@_)", [1, " $1 "], [-1, " $(1)"], [0," $- "], ["TODO", " TODO "], ["",""]],
|
||||
["#,##0.0", [1,"1.0"], [-1,"-1.0"], [0,"0.0"], ["TODO","TODO"]],
|
||||
["#,##0.00", [1,"1.00"], [-1,"-1.00"], [0,"0.00"], ["TODO","TODO"]],
|
||||
["#,##0.000", [1,"1.000"], [-1,"-1.000"], [0,"0.000"], ["TODO","TODO"]],
|
||||
|
Loading…
Reference in New Issue
Block a user