castPath.js 535 B

12345678910111213141516
  1. var has = require('./has');
  2. var isArr = require('./isArr');
  3. exports = function(str, obj) {
  4. if (isArr(str)) return str;
  5. if (obj && has(obj, str)) return [str];
  6. var ret = [];
  7. str.replace(regPropName, function(match, number, quote, str) {
  8. ret.push(quote ? str.replace(regEscapeChar, '$1') : number || match);
  9. });
  10. return ret;
  11. };
  12. var regPropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
  13. var regEscapeChar = /\\(\\)?/g;
  14. module.exports = exports;