_stringToPath.js (840B)
1 var memoizeCapped = require('./_memoizeCapped'); 2 3 /** Used to match property names within property paths. */ 4 var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; 5 6 /** Used to match backslashes in property paths. */ 7 var reEscapeChar = /\\(\\)?/g; 8 9 /** 10 * Converts `string` to a property path array. 11 * 12 * @private 13 * @param {string} string The string to convert. 14 * @returns {Array} Returns the property path array. 15 */ 16 var stringToPath = memoizeCapped(function(string) { 17 var result = []; 18 if (string.charCodeAt(0) === 46 /* . */) { 19 result.push(''); 20 } 21 string.replace(rePropName, function(match, number, quote, subString) { 22 result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); 23 }); 24 return result; 25 }); 26 27 module.exports = stringToPath;