forked from sheetjs/sheetjs
		
	- browser shim updated (h/t @wintersm for discovering this) - smart tag ignores (h/t @lostinplace) - sheet_to_row_object_array bugfix (fixes #80, h/t @ChrisBurkeBSD) - README improved - baltic and vietnamese codepages: updated codepage to 1.3.4 - iOS Numbers can handle inline strings -> disabling SST by default - avoid Buffer accessors (see https://github.com/joyent/node/issues/7809) - caching certain hot regexes
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var strs = {}; // shared strings
 | |
| var _ssfopts = {}; // spreadsheet formatting options
 | |
| 
 | |
| RELS.WS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet";
 | |
| 
 | |
| function get_sst_id(sst, str) {
 | |
| 	for(var i = 0, len = sst.length; i < len; ++i) if(sst[i].t === str) { sst.Count ++; return i; }
 | |
| 	sst[len] = {t:str}; sst.Count ++; sst.Unique ++; return len;
 | |
| }
 | |
| 
 | |
| function get_cell_style(styles, cell, opts) {
 | |
| 	var z = opts.revssf[cell.z != null ? cell.z : "General"];
 | |
| 	for(var i = 0, len = styles.length; i != len; ++i) if(styles[i].numFmtId === z) return i;
 | |
| 	styles[len] = {
 | |
| 		numFmtId:z,
 | |
| 		fontId:0,
 | |
| 		fillId:0,
 | |
| 		borderId:0,
 | |
| 		xfId:0,
 | |
| 		applyNumberFormat:1
 | |
| 	};
 | |
| 	return len;
 | |
| }
 | |
| 
 | |
| function safe_format(p, fmtid, fillid, opts) {
 | |
| 	try {
 | |
| 		if(fmtid === 0) {
 | |
| 			if(p.t === 'n') {
 | |
| 				if((p.v|0) === p.v) p.w = SSF._general_int(p.v,_ssfopts);
 | |
| 				else p.w = SSF._general_num(p.v,_ssfopts);
 | |
| 			}
 | |
| 			else if(p.v === undefined) return "";
 | |
| 			else p.w = SSF._general(p.v,_ssfopts);
 | |
| 		}
 | |
| 		else p.w = SSF.format(fmtid,p.v,_ssfopts);
 | |
| 		if(opts.cellNF) p.z = SSF._table[fmtid];
 | |
| 	} catch(e) { if(opts.WTF) throw e; }
 | |
| 	if(fillid) try {
 | |
| 		p.s = styles.Fills[fillid];
 | |
| 		if (p.s.fgColor && p.s.fgColor.theme) {
 | |
| 			p.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);
 | |
| 			if(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;
 | |
| 		}
 | |
| 		if (p.s.bgColor && p.s.bgColor.theme) {
 | |
| 			p.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);
 | |
| 			if(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;
 | |
| 		}
 | |
| 	} catch(e) { if(opts.WTF) throw e; }
 | |
| }
 |