You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					53 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					53 lines
				
				1.4 KiB
			| 
											2 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | var colCache = require('./col-cache'); // const cellRefRegex = /(([a-z_\-0-9]*)!)?[$]?([a-z]+)[$]?([1-9][0-9]*)/i;
 | ||
|  | 
 | ||
|  | 
 | ||
|  | var replacementCandidateRx = /(([a-z_\-0-9]*)!)?([a-z0-9_$]{2,})([(])?/gi; | ||
|  | var CRrx = /^([$])?([a-z]+)([$])?([1-9][0-9]*)$/i; | ||
|  | 
 | ||
|  | function slideFormula(formula, fromCell, toCell) { | ||
|  |   var offset = colCache.decode(fromCell); | ||
|  |   var to = colCache.decode(toCell); | ||
|  |   return formula.replace(replacementCandidateRx, function (refMatch, sheet, sheetMaybe, addrPart, trailingParen) { | ||
|  |     if (trailingParen) { | ||
|  |       return refMatch; | ||
|  |     } | ||
|  | 
 | ||
|  |     var match = CRrx.exec(addrPart); | ||
|  | 
 | ||
|  |     if (match) { | ||
|  |       var colDollar = match[1]; | ||
|  |       var colStr = match[2].toUpperCase(); | ||
|  |       var rowDollar = match[3]; | ||
|  |       var rowStr = match[4]; | ||
|  | 
 | ||
|  |       if (colStr.length > 3 || colStr.length === 3 && colStr > 'XFD') { | ||
|  |         // > XFD is the highest col number in excel 2007 and beyond, so this is a named range
 | ||
|  |         return refMatch; | ||
|  |       } | ||
|  | 
 | ||
|  |       var col = colCache.l2n(colStr); | ||
|  |       var row = parseInt(rowStr, 10); | ||
|  | 
 | ||
|  |       if (!colDollar) { | ||
|  |         col += to.col - offset.col; | ||
|  |       } | ||
|  | 
 | ||
|  |       if (!rowDollar) { | ||
|  |         row += to.row - offset.row; | ||
|  |       } | ||
|  | 
 | ||
|  |       var res = (sheet || '') + (colDollar || '') + colCache.n2l(col) + (rowDollar || '') + row; | ||
|  |       return res; | ||
|  |     } | ||
|  | 
 | ||
|  |     return refMatch; | ||
|  |   }); | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = { | ||
|  |   slideFormula: slideFormula | ||
|  | }; | ||
|  | //# sourceMappingURL=shared-formula.js.map
 |