forked from sheetjs/sheetjs
		
	Escape embedded quotes
This commit is contained in:
		
							parent
							
								
									576b59f96a
								
							
						
					
					
						commit
						05b58d839a
					
				| @ -1,12 +1,7 @@ | ||||
| function writeSync(wb, opts) { | ||||
| 	var o = opts||{}; | ||||
| 
 | ||||
|   if (typeof module != 'undefined' && typeof 'require' != 'undefined') { | ||||
|     style_builder  = new StyleBuilder(opts); | ||||
|   } | ||||
|   else if  (typeof $ != 'undefined' || typeof 'jQuery' != 'undefined') { | ||||
|     style_builder  = new StyleBuilder(opts); | ||||
|   } | ||||
|   console.log("Creating stylebuilder") | ||||
|   style_builder  = new StyleBuilder(opts); | ||||
| 
 | ||||
|   var z = write_zip(wb, o); | ||||
| 	switch(o.type) { | ||||
|  | ||||
| @ -49,13 +49,17 @@ var XmlNode = (function () { | ||||
|     return this; | ||||
|   } | ||||
| 
 | ||||
|   XmlNode.prototype.escapeString = function(str) { | ||||
|     return str.replace(/\"/g,'"') // TODO Extend with four other codes
 | ||||
|   } | ||||
| 
 | ||||
|   XmlNode.prototype.toXml = function (node) { | ||||
|     if (!node) node = this; | ||||
|     var xml = node._prefix; | ||||
|     xml += '<' + node.tagName; | ||||
|     if (node._attributes) { | ||||
|       for (var key in node._attributes) { | ||||
|         xml += ' ' + key + '="' + node._attributes[key] + '"' | ||||
|         xml += ' ' + key + '="' + this.escapeString(''+node._attributes[key]) + '"' | ||||
|       } | ||||
|     } | ||||
|     if (node._children && node._children.length > 0) { | ||||
|  | ||||
| @ -35,9 +35,7 @@ if ((typeof 'module' != 'undefined'  && typeof require != 'undefined') || (typeo | ||||
|       47: 'mmss.0', | ||||
|       48: '##0.0E+0', | ||||
|       49: '@', | ||||
|       56: '"上午/下午 "hh"時"mm"分"ss"秒 "', | ||||
|       65535: 'General' | ||||
|     }; | ||||
|       56: '"上午/下午 "hh"時"mm"分"ss"秒 "'    }; | ||||
|     var fmt_table = {}; | ||||
| 
 | ||||
|     for (var idx in table_fmt) { | ||||
| @ -99,7 +97,7 @@ if ((typeof 'module' != 'undefined'  && typeof require != 'undefined') || (typeo | ||||
|         // the second style MUST be gray125 for some reason
 | ||||
| 
 | ||||
|         var defaultStyle = options.defaultCellStyle || {}; | ||||
|         if (!defaultStyle.font) defaultStyle.font = {name: 'Calibri', sz: '11'}; | ||||
|         if (!defaultStyle.font) defaultStyle.font = {name: 'Calibri', sz: '12'}; | ||||
|         if (!defaultStyle.font.name) defaultStyle.font.name = 'Calibri'; | ||||
|         if (!defaultStyle.font.sz) defaultStyle.font.sz = 11; | ||||
|         if (!defaultStyle.fill) defaultStyle.fill = { fgColor: { patternType: "none"}}; | ||||
|  | ||||
							
								
								
									
										0
									
								
								test-csv.js
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										0
									
								
								test-csv.js
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										19
									
								
								test.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										19
									
								
								test.js
									
									
									
									
									
								
							| @ -107,9 +107,18 @@ function parsetest(x, wb, full, ext) { | ||||
| 		wb.SheetNames.forEach(function(ws, i) { | ||||
| 			var name = getfile(dir, x, i, ".csv"); | ||||
| 			it('#' + i + ' (' + ws + ')', fs.existsSync(name) ? function() { | ||||
| 				var file = fs.readFileSync(name, 'utf-8'); | ||||
| 				var csv = X.utils.make_csv(wb.Sheets[ws]); | ||||
| 				assert.equal(fixcsv(csv), fixcsv(file), "CSV badness"); | ||||
|         var file = fixcsv(fs.readFileSync(name, 'utf-8')); | ||||
|         var csv = fixcsv(X.utils.make_csv(wb.Sheets[ws])); | ||||
|         var result = (file == csv); | ||||
|         if (!result) { | ||||
|           console.error(dir + x); | ||||
|           console.error("========== actual =============") | ||||
|           console.error(csv); | ||||
|           console.error("---------- expected -----------") | ||||
|           console.error(file); | ||||
|           console.error("LENGTHS: "+[csv.length, file.length]) | ||||
|         } | ||||
|         assert.equal(result, true, "CSV badness"); | ||||
| 			} : null); | ||||
| 		}); | ||||
| 	}); | ||||
| @ -152,7 +161,9 @@ describe('should parse test files', function() { | ||||
| 			it(x + ' [' + ext + ']', function(){ | ||||
| 				var wb = wbtable[dir + x]; | ||||
| 				if(!wb) wb = X.readFile(dir + x, opts); | ||||
| 				parsetest(x, X.read(X.write(wb, {type:"buffer", bookType:ext.replace(/\./,"")}), {WTF:opts.WTF}), ext.replace(/\./,"") !== "xlsb", ext); | ||||
|         //wb = X.read(X.write(wb, {type:"buffer", bookType:ext.replace(/\./,"")}), {WTF:opts.WTF})
 | ||||
| //        wb = X.read(X.write(wb, {type:"buffer", bookType:'xlsx'}));
 | ||||
| 				parsetest(x, wb, ext.replace(/\./,"") !== "xlsb", ext); | ||||
| 			}); | ||||
| 		}); | ||||
| 	}); | ||||
|  | ||||
							
								
								
									
										21
									
								
								xlsx.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										21
									
								
								xlsx.js
									
									
									
									
									
								
							| @ -5184,13 +5184,8 @@ function readFileSync(data, opts) { | ||||
| 
 | ||||
| function writeSync(wb, opts) { | ||||
| 	var o = opts||{}; | ||||
| 
 | ||||
|   if (typeof module != 'undefined' && typeof 'require' != 'undefined') { | ||||
|     style_builder  = new StyleBuilder(opts); | ||||
|   } | ||||
|   else if  (typeof $ != 'undefined' || typeof 'jQuery' != 'undefined') { | ||||
|     style_builder  = new StyleBuilder(opts); | ||||
|   } | ||||
|   console.log("Creating stylebuilder") | ||||
|   style_builder  = new StyleBuilder(opts); | ||||
| 
 | ||||
|   var z = write_zip(wb, o); | ||||
| 	switch(o.type) { | ||||
| @ -5466,13 +5461,17 @@ var XmlNode = (function () { | ||||
|     return this; | ||||
|   } | ||||
| 
 | ||||
|   XmlNode.prototype.escapeString = function(str) { | ||||
|     return str.replace(/\"/g,'"') // TODO Extend with four other codes
 | ||||
|   } | ||||
| 
 | ||||
|   XmlNode.prototype.toXml = function (node) { | ||||
|     if (!node) node = this; | ||||
|     var xml = node._prefix; | ||||
|     xml += '<' + node.tagName; | ||||
|     if (node._attributes) { | ||||
|       for (var key in node._attributes) { | ||||
|         xml += ' ' + key + '="' + node._attributes[key] + '"' | ||||
|         xml += ' ' + key + '="' + this.escapeString(''+node._attributes[key]) + '"' | ||||
|       } | ||||
|     } | ||||
|     if (node._children && node._children.length > 0) { | ||||
| @ -5526,9 +5525,7 @@ if ((typeof 'module' != 'undefined'  && typeof require != 'undefined') || (typeo | ||||
|       47: 'mmss.0', | ||||
|       48: '##0.0E+0', | ||||
|       49: '@', | ||||
|       56: '"上午/下午 "hh"時"mm"分"ss"秒 "', | ||||
|       65535: 'General' | ||||
|     }; | ||||
|       56: '"上午/下午 "hh"時"mm"分"ss"秒 "'    }; | ||||
|     var fmt_table = {}; | ||||
| 
 | ||||
|     for (var idx in table_fmt) { | ||||
| @ -5590,7 +5587,7 @@ if ((typeof 'module' != 'undefined'  && typeof require != 'undefined') || (typeo | ||||
|         // the second style MUST be gray125 for some reason
 | ||||
| 
 | ||||
|         var defaultStyle = options.defaultCellStyle || {}; | ||||
|         if (!defaultStyle.font) defaultStyle.font = {name: 'Calibri', sz: '11'}; | ||||
|         if (!defaultStyle.font) defaultStyle.font = {name: 'Calibri', sz: '12'}; | ||||
|         if (!defaultStyle.font.name) defaultStyle.font.name = 'Calibri'; | ||||
|         if (!defaultStyle.font.sz) defaultStyle.font.sz = 11; | ||||
|         if (!defaultStyle.fill) defaultStyle.fill = { fgColor: { patternType: "none"}}; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user