| 
									
										
										
										
											2014-05-16 00:33:34 +00:00
										 |  |  | /* 9.3.2 OPC Relationships Markup */ | 
					
						
							|  |  |  | var RELS = { | 
					
						
							|  |  |  | 	WB: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", | 
					
						
							|  |  |  | 	SHEET: "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument" | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function parse_rels(data, currentFilePath) { | 
					
						
							|  |  |  | 	if (!data) return data; | 
					
						
							|  |  |  | 	if (currentFilePath.charAt(0) !== '/') { | 
					
						
							|  |  |  | 		currentFilePath = '/'+currentFilePath; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	var rels = {}; | 
					
						
							|  |  |  | 	var hash = {}; | 
					
						
							|  |  |  | 	var resolveRelativePathIntoAbsolute = function (to) { | 
					
						
							|  |  |  | 		var toksFrom = currentFilePath.split('/'); | 
					
						
							|  |  |  | 		toksFrom.pop(); // folder path
 | 
					
						
							|  |  |  | 		var toksTo = to.split('/'); | 
					
						
							|  |  |  | 		var reversed = []; | 
					
						
							|  |  |  | 		while (toksTo.length !== 0) { | 
					
						
							|  |  |  | 			var tokTo = toksTo.shift(); | 
					
						
							|  |  |  | 			if (tokTo === '..') { | 
					
						
							|  |  |  | 				toksFrom.pop(); | 
					
						
							|  |  |  | 			} else if (tokTo !== '.') { | 
					
						
							|  |  |  | 				toksFrom.push(tokTo); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		return toksFrom.join('/'); | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-29 18:29:45 +00:00
										 |  |  | 	data.match(tagregex).forEach(function(x) { | 
					
						
							| 
									
										
										
										
											2014-05-16 00:33:34 +00:00
										 |  |  | 		var y = parsexmltag(x); | 
					
						
							|  |  |  | 		/* 9.3.2.2 OPC_Relationships */ | 
					
						
							|  |  |  | 		if (y[0] === '<Relationship') { | 
					
						
							|  |  |  | 			var rel = {}; rel.Type = y.Type; rel.Target = y.Target; rel.Id = y.Id; rel.TargetMode = y.TargetMode; | 
					
						
							|  |  |  | 			var canonictarget = y.TargetMode === 'External' ? y.Target : resolveRelativePathIntoAbsolute(y.Target); | 
					
						
							|  |  |  | 			rels[canonictarget] = rel; | 
					
						
							|  |  |  | 			hash[y.Id] = rel; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 	rels["!id"] = hash; | 
					
						
							|  |  |  | 	return rels; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | XMLNS.RELS = 'http://schemas.openxmlformats.org/package/2006/relationships'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var RELS_ROOT = writextag('Relationships', null, { | 
					
						
							|  |  |  | 	//'xmlns:ns0': XMLNS.RELS,
 | 
					
						
							|  |  |  | 	'xmlns': XMLNS.RELS | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* TODO */ | 
					
						
							|  |  |  | function write_rels(rels) { | 
					
						
							|  |  |  | 	var o = []; | 
					
						
							| 
									
										
										
										
											2014-06-29 18:29:45 +00:00
										 |  |  | 	o[o.length] = (XML_HEADER); | 
					
						
							|  |  |  | 	o[o.length] = (RELS_ROOT); | 
					
						
							| 
									
										
										
										
											2014-05-16 00:33:34 +00:00
										 |  |  | 	keys(rels['!id']).forEach(function(rid) { var rel = rels['!id'][rid]; | 
					
						
							| 
									
										
										
										
											2014-06-29 18:29:45 +00:00
										 |  |  | 		o[o.length] = (writextag('Relationship', null, rel)); | 
					
						
							| 
									
										
										
										
											2014-05-16 00:33:34 +00:00
										 |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2014-06-29 18:29:45 +00:00
										 |  |  | 	if(o.length>2){ o[o.length] = ('</Relationships>'); o[1]=o[1].replace("/>",">"); } | 
					
						
							| 
									
										
										
										
											2014-05-16 00:33:34 +00:00
										 |  |  | 	return o.join(""); | 
					
						
							|  |  |  | } |