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.
		
		
		
		
		
			
		
			
				
					
					
						
							27 lines
						
					
					
						
							840 B
						
					
					
				
			
		
		
	
	
							27 lines
						
					
					
						
							840 B
						
					
					
				var memoizeCapped = require('./_memoizeCapped'); | 
						|
 | 
						|
/** Used to match property names within property paths. */ | 
						|
var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; | 
						|
 | 
						|
/** Used to match backslashes in property paths. */ | 
						|
var reEscapeChar = /\\(\\)?/g; | 
						|
 | 
						|
/** | 
						|
 * Converts `string` to a property path array. | 
						|
 * | 
						|
 * @private | 
						|
 * @param {string} string The string to convert. | 
						|
 * @returns {Array} Returns the property path array. | 
						|
 */ | 
						|
var stringToPath = memoizeCapped(function(string) { | 
						|
  var result = []; | 
						|
  if (string.charCodeAt(0) === 46 /* . */) { | 
						|
    result.push(''); | 
						|
  } | 
						|
  string.replace(rePropName, function(match, number, quote, subString) { | 
						|
    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); | 
						|
  }); | 
						|
  return result; | 
						|
}); | 
						|
 | 
						|
module.exports = stringToPath;
 | 
						|
 |