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.
		
		
		
		
		
			
		
			
				
					
					
						
							28 lines
						
					
					
						
							840 B
						
					
					
				
			
		
		
	
	
							28 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;
 |