forked from sheetjs/sheetjs
		
	version bump 0.6.4: alternate forms with literal -
Some versions of Excel render formats with literal hyphens, like `00000\-0000` that should be properly handled
This commit is contained in:
		
							parent
							
								
									be19bcd01e
								
							
						
					
					
						commit
						c156693778
					
				| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "ssf", | ||||
|   "version": "0.6.3", | ||||
|   "version": "0.6.4", | ||||
|   "author": "SheetJS", | ||||
|   "description": "pure-JS library to format data using ECMA-376 spreadsheet Format Codes", | ||||
|   "keywords": [ "format", "sprintf", "spreadsheet" ], | ||||
|  | ||||
							
								
								
									
										14
									
								
								ssf.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										14
									
								
								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.6.3'; | ||||
| SSF.version = '0.6.4'; | ||||
| /* Options */ | ||||
| var opts_fmt = {}; | ||||
| function fixopts(o){for(var y in opts_fmt) if(o[y]===undefined) o[y]=opts_fmt[y];} | ||||
| @ -263,15 +263,15 @@ var write_num = function(type, fmt, val) { | ||||
|     return val < 0 ? "-" + write_num(type, fmt, -val) : commaify(String(Math.floor(val))) + "." + pad(rr,r[1].length,0); | ||||
|   } | ||||
|   if((r = fmt.match(/^#,#*,#0/))) return write_num(type,fmt.replace(/^#,#*,/,""),val); | ||||
|   if((r = fmt.match(/^([0#]+)-([0#]+)$/))) { | ||||
|     ff = write_num(type, fmt.replace(/-/,""), val); | ||||
|   if((r = fmt.match(/^([0#]+)\\?-([0#]+)$/))) { | ||||
|     ff = write_num(type, fmt.replace(/[\\-]/g,""), val); | ||||
|     return ff.substr(0,ff.length - r[2].length) + "-" + ff.substr(ff.length-r[2].length); | ||||
|   } | ||||
|   if((r = fmt.match(/^([0#]+)-([0#]+)-([0#]+)$/))) { | ||||
|     ff = write_num(type, fmt.replace(/-/g,""), val); | ||||
|   if((r = fmt.match(/^([0#]+)\\?-([0#]+)\\?-([0#]+)$/))) { | ||||
|     ff = write_num(type, fmt.replace(/[\\-]/g,""), val); | ||||
|     return ff.substr(0,ff.length - r[2].length - r[3].length) + "-" + ff.substr(ff.length-r[2].length - r[3].length, r[2].length) + "-" + ff.substr(ff.length-r[3].length); | ||||
|   } | ||||
|   if(fmt == "(###) ###-####") { | ||||
|   if(fmt.match(/\(###\) ###\\?-####/)) { | ||||
|     ff = write_num(type, "##########", val); | ||||
|     return "(" + ff.substr(0,3) + ") " + ff.substr(3, 3) + "-" + ff.substr(6); | ||||
|   } | ||||
| @ -370,7 +370,7 @@ function eval_fmt(fmt, v, opts, flen) { | ||||
|         break; | ||||
|       /* Numbers */ | ||||
|       case '0': case '#': case '.': | ||||
|         o = c; while("0#?.,E+-%".indexOf(c=fmt[++i]) > -1) o += c; | ||||
|         o = c; while("0#?.,E+-%".indexOf(c=fmt[++i]) > -1 || c=='\\' && fmt[i+1] == "-" && "0#".indexOf(fmt[i+2])>-1) o += c; | ||||
|         out.push({t:'n', v:o}); break; | ||||
|       case '?': | ||||
|         o = fmt[i]; while(fmt[++i] === c) o+=c; | ||||
|  | ||||
							
								
								
									
										17
									
								
								ssf.md
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										17
									
								
								ssf.md
									
									
									
									
									
								
							| @ -470,12 +470,12 @@ The next few simplifications ignore leading optional sigils (`#`): | ||||
| The `Zip Code + 4` format needs to treat an interstitial hyphen as a character: | ||||
| 
 | ||||
| ``` | ||||
|   if((r = fmt.match(/^([0#]+)-([0#]+)$/))) { | ||||
|     ff = write_num(type, fmt.replace(/-/,""), val); | ||||
|   if((r = fmt.match(/^([0#]+)\\?-([0#]+)$/))) { | ||||
|     ff = write_num(type, fmt.replace(/[\\-]/g,""), val); | ||||
|     return ff.substr(0,ff.length - r[2].length) + "-" + ff.substr(ff.length-r[2].length); | ||||
|   } | ||||
|   if((r = fmt.match(/^([0#]+)-([0#]+)-([0#]+)$/))) { | ||||
|     ff = write_num(type, fmt.replace(/-/g,""), val); | ||||
|   if((r = fmt.match(/^([0#]+)\\?-([0#]+)\\?-([0#]+)$/))) { | ||||
|     ff = write_num(type, fmt.replace(/[\\-]/g,""), val); | ||||
|     return ff.substr(0,ff.length - r[2].length - r[3].length) + "-" + ff.substr(ff.length-r[2].length - r[3].length, r[2].length) + "-" + ff.substr(ff.length-r[3].length); | ||||
|   } | ||||
| ``` | ||||
| @ -484,7 +484,7 @@ There's a better way to generalize the phone number and other formats in terms | ||||
| of first drawing the digits, but this selection allows for more nuance: | ||||
| 
 | ||||
| ``` | ||||
|   if(fmt == "(###) ###-####") { | ||||
|   if(fmt.match(/\(###\) ###\\?-####/)) { | ||||
|     ff = write_num(type, "##########", val); | ||||
|     return "(" + ff.substr(0,3) + ") " + ff.substr(3, 3) + "-" + ff.substr(6); | ||||
|   } | ||||
| @ -669,12 +669,13 @@ pseudo-type `Z` is used to capture absolute time blocks: | ||||
|         break; | ||||
| ``` | ||||
| 
 | ||||
| Number blocks (following the general pattern `[0#?][0#?.,E+-%]*`) are grouped together: | ||||
| Number blocks (following the general pattern `[0#?][0#?.,E+-%]*`) are grouped | ||||
| together.  Literal hyphens are swallowed as well: | ||||
| 
 | ||||
| ``` | ||||
|       /* Numbers */ | ||||
|       case '0': case '#': case '.': | ||||
|         o = c; while("0#?.,E+-%".indexOf(c=fmt[++i]) > -1) o += c; | ||||
|         o = c; while("0#?.,E+-%".indexOf(c=fmt[++i]) > -1 || c=='\\' && fmt[i+1] == "-" && "0#".indexOf(fmt[i+2])>-1) o += c; | ||||
|         out.push({t:'n', v:o}); break; | ||||
| 
 | ||||
| ``` | ||||
| @ -1139,7 +1140,7 @@ coveralls: | ||||
| ```json>package.json | ||||
| { | ||||
|   "name": "ssf", | ||||
|   "version": "0.6.3", | ||||
|   "version": "0.6.4", | ||||
|   "author": "SheetJS", | ||||
|   "description": "pure-JS library to format data using ECMA-376 spreadsheet Format Codes", | ||||
|   "keywords": [ "format", "sprintf", "spreadsheet" ], | ||||
|  | ||||
| @ -73,7 +73,10 @@ | ||||
|   ], | ||||
|   ["00000-0000", [941051630, "94105-1630"]], | ||||
|   ["000-00-0000", [123456789, "123-45-6789"]], | ||||
|   ["00000\\-0000", [941051630, "94105-1630"]], | ||||
|   ["000\\-00\\-0000", [123456789, "123-45-6789"]], | ||||
|   ["[<=9999999]###-####;(###) ###-####", [8675309, "867-5309"],[2813308004, "(281) 330-8004"]], | ||||
|   ["[<=9999999]###\\-####;(###) ###\\-####", [8675309, "867-5309"],[2813308004, "(281) 330-8004"]], | ||||
|   ["[Red][<-25]General;[Blue][>25]General;[Green]General;[Yellow]General", [50, "50"],[26, "26"],[25,"25"],[1,"1"],[0,"0"],[-1,"-1"],[-25,"-25"],[-26,"26","#"],[-50,"50","#"], ["foo","foo"],["bar","bar"]], | ||||
|   ["[Red][<=-25]General;[Blue][>=25]General;[Green]General;[Yellow]General", [50, "50"],[26, "26"],[25,"25"],[1,"1"],[0,"0"],[-1,"-1"],[-25,"-25"],[-26,"26","#"],[-50,"50","#"], ["foo","foo"],["bar","bar"]], | ||||
|   ["[Red]General ;[Blue]General\\ ;[Green]Generalp;[Yellow]General'", [50, "50 "],[0,"0p"],[-25,"-25 "],["foo","foo'"]], | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user