forked from sheetjs/sheetjs
		
	version bump 0.8.1: more weird formats
- handle formats like ???00.00 - return empty string with bad dates under A/P and AM/PM formats
This commit is contained in:
		
							parent
							
								
									e32a2894c4
								
							
						
					
					
						commit
						097f026d03
					
				
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| node_modules/ | ||||
| tmp/ | ||||
| .vocrc | ||||
| v8.log | ||||
| perf.log | ||||
| @ -51,7 +51,7 @@ Apache 2.0 | ||||
| 
 | ||||
| ## Tests | ||||
| 
 | ||||
| [](https://travis-ci.org/SheetJS/ssf) | ||||
| [](https://travis-ci.org/SheetJS/ssf) | ||||
| 
 | ||||
| [](https://coveralls.io/r/SheetJS/ssf?branch=master) | ||||
| 
 | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "ssf", | ||||
|   "version": "0.8.0", | ||||
|   "version": "0.8.1", | ||||
|   "author": "SheetJS", | ||||
|   "description": "Format data using ECMA-376 spreadsheet Format Codes", | ||||
|   "keywords": [ "format", "sprintf", "spreadsheet" ], | ||||
|  | ||||
							
								
								
									
										10
									
								
								ssf.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										10
									
								
								ssf.js
									
									
									
									
									
								
							| @ -2,7 +2,7 @@ | ||||
| /*jshint -W041 */ | ||||
| var SSF = {}; | ||||
| var make_ssf = function make_ssf(SSF){ | ||||
| SSF.version = '0.8.0'; | ||||
| SSF.version = '0.8.1'; | ||||
| function _strrev(x) { var o = "", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; } | ||||
| function fill(c,l) { var o = ""; while(o.length < l) o+=c; return o; } | ||||
| function pad0(v,d){var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} | ||||
| @ -375,7 +375,7 @@ function write_num_flt(type, fmt, val) { | ||||
|     if(fmt.length <= o.length) return o; | ||||
|     return hashq(fmt.substr(0,fmt.length-o.length)) + o; | ||||
|   } | ||||
|   if((r = fmt.match(/^([#0]+)\.([#0]+)$/)) !== null) { | ||||
|   if((r = fmt.match(/^([#0?]+)\.([#0]+)$/)) !== null) { | ||||
|     o = "" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,"$1"); | ||||
|     ri = o.indexOf("."); | ||||
|     var lres = fmt.indexOf(".") - ri, rres = fmt.length - o.length - lres; | ||||
| @ -539,7 +539,7 @@ function eval_fmt(fmt, v, opts, flen) { | ||||
|         out[out.length] = {t:'T', v:v}; ++i; break; | ||||
|       case 'B': case 'b': | ||||
|         if(fmt[i+1] === "1" || fmt[i+1] === "2") { | ||||
|           if(dt == null) dt = parse_date_code(v, opts, fmt[i+1] === "2"); | ||||
|           if(dt==null) { dt=parse_date_code(v, opts, fmt[i+1] === "2"); if(dt==null) return ""; } | ||||
|           out[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break; | ||||
|         } | ||||
|         /* falls through */ | ||||
| @ -556,8 +556,8 @@ function eval_fmt(fmt, v, opts, flen) { | ||||
|       case 'A': | ||||
|         q={t:c, v:"A"}; | ||||
|         if(dt==null) dt=parse_date_code(v, opts); | ||||
|         if(fmt.substr(i, 3) === "A/P") {q.v = dt.H >= 12 ? "P" : "A"; q.t = 'T'; hr='h';i+=3;} | ||||
|         else if(fmt.substr(i,5) === "AM/PM") { q.v = dt.H >= 12 ? "PM" : "AM"; q.t = 'T'; i+=5; hr='h'; } | ||||
|         if(fmt.substr(i, 3) === "A/P") { if(dt!=null) q.v = dt.H >= 12 ? "P" : "A"; q.t = 'T'; hr='h';i+=3;} | ||||
|         else if(fmt.substr(i,5) === "AM/PM") { if(dt!=null) q.v = dt.H >= 12 ? "PM" : "AM"; q.t = 'T'; i+=5; hr='h'; } | ||||
|         else { q.t = "t"; ++i; } | ||||
|         if(dt==null && q.t === 'T') return ""; | ||||
|         out[out.length] = q; lst = c; break; | ||||
|  | ||||
							
								
								
									
										13
									
								
								ssf.md
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										13
									
								
								ssf.md
									
									
									
									
									
								
							| @ -669,7 +669,7 @@ The general class `/^[#0?]+$/` treats the '0' as literal, '#' as noop, '?' as sp | ||||
|     if(fmt.length <= o.length) return o; | ||||
|     return hashq(fmt.substr(0,fmt.length-o.length)) + o; | ||||
|   } | ||||
|   if((r = fmt.match(/^([#0]+)\.([#0]+)$/)) !== null) { | ||||
|   if((r = fmt.match(/^([#0?]+)\.([#0]+)$/)) !== null) { | ||||
|     o = "" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,"$1"); | ||||
|     ri = o.indexOf("."); | ||||
|     var lres = fmt.indexOf(".") - ri, rres = fmt.length - o.length - lres; | ||||
| @ -881,7 +881,7 @@ acts just like `y` except the year is shifted: | ||||
| ``` | ||||
|       case 'B': case 'b': | ||||
|         if(fmt[i+1] === "1" || fmt[i+1] === "2") { | ||||
|           if(dt == null) dt = parse_date_code(v, opts, fmt[i+1] === "2"); | ||||
|           if(dt==null) { dt=parse_date_code(v, opts, fmt[i+1] === "2"); if(dt==null) return ""; } | ||||
|           out[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break; | ||||
|         } | ||||
|         /* falls through */ | ||||
| @ -930,8 +930,8 @@ the HH/hh jazz.  TODO: investigate this further. | ||||
|       case 'A': | ||||
|         q={t:c, v:"A"}; | ||||
|         if(dt==null) dt=parse_date_code(v, opts); | ||||
|         if(fmt.substr(i, 3) === "A/P") {q.v = dt.H >= 12 ? "P" : "A"; q.t = 'T'; hr='h';i+=3;} | ||||
|         else if(fmt.substr(i,5) === "AM/PM") { q.v = dt.H >= 12 ? "PM" : "AM"; q.t = 'T'; i+=5; hr='h'; } | ||||
|         if(fmt.substr(i, 3) === "A/P") { if(dt!=null) q.v = dt.H >= 12 ? "P" : "A"; q.t = 'T'; hr='h';i+=3;} | ||||
|         else if(fmt.substr(i,5) === "AM/PM") { if(dt!=null) q.v = dt.H >= 12 ? "PM" : "AM"; q.t = 'T'; i+=5; hr='h'; } | ||||
|         else { q.t = "t"; ++i; } | ||||
|         if(dt==null && q.t === 'T') return ""; | ||||
|         out[out.length] = q; lst = c; break; | ||||
| @ -1487,9 +1487,8 @@ cat tmp/*.js > ssf.js | ||||
| ``` | ||||
| 
 | ||||
| ```>.gitignore | ||||
| .gitignore | ||||
| tmp/ | ||||
| node_modules/ | ||||
| tmp/ | ||||
| .vocrc | ||||
| v8.log | ||||
| perf.log | ||||
| @ -1557,7 +1556,7 @@ coveralls: | ||||
| ```json>package.json | ||||
| { | ||||
|   "name": "ssf", | ||||
|   "version": "0.8.0", | ||||
|   "version": "0.8.1", | ||||
|   "author": "SheetJS", | ||||
|   "description": "Format data using ECMA-376 spreadsheet Format Codes", | ||||
|   "keywords": [ "format", "sprintf", "spreadsheet" ], | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user