diff options
Diffstat (limited to 'deps/npm/node_modules/lodash/internal/toPath.js')
-rw-r--r-- | deps/npm/node_modules/lodash/internal/toPath.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/deps/npm/node_modules/lodash/internal/toPath.js b/deps/npm/node_modules/lodash/internal/toPath.js new file mode 100644 index 0000000000..d29f1eb528 --- /dev/null +++ b/deps/npm/node_modules/lodash/internal/toPath.js @@ -0,0 +1,28 @@ +var baseToString = require('./baseToString'), + isArray = require('../lang/isArray'); + +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** + * Converts `value` to property path array if it's not one. + * + * @private + * @param {*} value The value to process. + * @returns {Array} Returns the property path array. + */ +function toPath(value) { + if (isArray(value)) { + return value; + } + var result = []; + baseToString(value).replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +} + +module.exports = toPath; |