parse-path.js 756 B

1234567891011121314151617181920212223242526272829303132
  1. var isArray = require('../type/is-array');
  2. var isString = require('../type/is-string');
  3. var each = require('../each');
  4. var regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/ig;
  5. var regexDot = /[^\s\,]+/ig;
  6. module.exports = function parsePath(path) {
  7. path = path || [];
  8. if (isArray(path)) {
  9. return path;
  10. }
  11. if (isString(path)) {
  12. path = path.match(regexTags);
  13. each(path, function (item, index) {
  14. item = item.match(regexDot);
  15. if (item[0].length > 1) {
  16. var tag = item[0].charAt(0);
  17. item.splice(1, 0, item[0].substr(1));
  18. item[0] = tag;
  19. }
  20. each(item, function (sub, i) {
  21. if (!isNaN(sub)) {
  22. item[i] = +sub;
  23. }
  24. });
  25. path[index] = item;
  26. });
  27. return path;
  28. }
  29. };