1 | var memoizeCapped = require('./_memoizeCapped'),
|
2 | toString = require('./toString');
|
3 |
|
4 |
|
5 | var reLeadingDot = /^\./,
|
6 | rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
|
7 |
|
8 |
|
9 | var reEscapeChar = /\\(\\)?/g;
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | var stringToPath = memoizeCapped(function(string) {
|
19 | string = toString(string);
|
20 |
|
21 | var result = [];
|
22 | if (reLeadingDot.test(string)) {
|
23 | result.push('');
|
24 | }
|
25 | string.replace(rePropName, function(match, number, quote, string) {
|
26 | result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
|
27 | });
|
28 | return result;
|
29 | });
|
30 |
|
31 | module.exports = stringToPath;
|