UNPKG

chain-able

Version:

interfaces that describe their intentions.

41 lines (34 loc) 3.96 kB
var isArray = require('../is/array') var isUndefined = require('../is/undefined') var lengthMinusOne = require('../util/lengthMinusOne') var cache module.exports = function (path) { if (!cache) { cache = new Map() } if (cache.has(path)) { return cache.get(path) } if (isArray(path)) { return path } var pathArr = path.split('.') var parts = [] for (var i = 0; i < pathArr.length; i++) { var p = pathArr[i] /** * @example 1 * '\.eh' -1 === '\\' (true) * +1 !== undefined (true, eh) * * @example 2 * '.eh' -1 === '\\' (false, undefined) * +1 !== undefined (true, eh) * * @example 3 * '\.' -1 === '\\' (true) * +1 !== undefined (false, eh) */ while (p[lengthMinusOne(p)] === '\\' && !isUndefined(pathArr[i + 1])) { p = p.slice(0, -1) + '.' + pathArr[++i] } parts.push(p) } cache.set(path, parts) return parts } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VzIjpbInNlZ21lbnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pcy9hcnJheScpXG5jb25zdCBpc1VuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2lzL3VuZGVmaW5lZCcpXG5jb25zdCBsZW5ndGhNaW51c09uZSA9IHJlcXVpcmUoJy4uL3V0aWwvbGVuZ3RoTWludXNPbmUnKVxuXG5sZXQgY2FjaGVcbm1vZHVsZS5leHBvcnRzID0gcGF0aCA9PiB7XG4gIGlmICghY2FjaGUpIGNhY2hlID0gbmV3IE1hcCgpXG4gIGlmIChjYWNoZS5oYXMocGF0aCkpIHJldHVybiBjYWNoZS5nZXQocGF0aClcbiAgaWYgKGlzQXJyYXkocGF0aCkpIHJldHVybiBwYXRoXG5cbiAgY29uc3QgcGF0aEFyciA9IHBhdGguc3BsaXQoJy4nKVxuICBjb25zdCBwYXJ0cyA9IFtdXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IHAgPSBwYXRoQXJyW2ldXG5cbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSAxXG4gICAgICogICAgICAgICAgJ1xcLmVoJyAtMSA9PT0gJ1xcXFwnICAgICAgKHRydWUpXG4gICAgICogICAgICAgICAgICAgICAgKzEgIT09IHVuZGVmaW5lZCAodHJ1ZSwgZWgpXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZSAyXG4gICAgICogICAgICAgICAgJy5laCcgIC0xID09PSAnXFxcXCcgICAgICAoZmFsc2UsIHVuZGVmaW5lZClcbiAgICAgKiAgICAgICAgICAgICAgICAgKzEgIT09IHVuZGVmaW5lZCAodHJ1ZSwgZWgpXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZSAzXG4gICAgICogICAgICAgICAgJ1xcLicgIC0xID09PSAnXFxcXCcgICAgICAodHJ1ZSlcbiAgICAgKiAgICAgICAgICAgICAgICArMSAhPT0gdW5kZWZpbmVkIChmYWxzZSwgZWgpXG4gICAgICovXG4gICAgd2hpbGUgKHBbbGVuZ3RoTWludXNPbmUocCldID09PSAnXFxcXCcgJiYgIWlzVW5kZWZpbmVkKHBhdGhBcnJbaSArIDFdKSkge1xuICAgICAgcCA9IHAuc2xpY2UoMCwgLTEpICsgJy4nICsgcGF0aEFyclsrK2ldXG4gICAgfVxuXG4gICAgcGFydHMucHVzaChwKVxuICB9XG5cbiAgY2FjaGUuc2V0KHBhdGgsIHBhcnRzKVxuICByZXR1cm4gcGFydHNcbn1cbiJdLCJuYW1lcyI6WyJjb25zdCIsImxldCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUN0Q0EsR0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7QUFDOUNBLEdBQUssQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDOztBQUV4REMsR0FBRyxDQUFDLEtBQUs7QUFDVCxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQUEsSUFBSSxDQUFBLENBQUMsQUFBRztFQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUEsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEVBQUE7RUFDN0IsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUEsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFBO0VBQzNDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUEsT0FBTyxJQUFJLEVBQUE7O0VBRTlCRCxHQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0VBQy9CQSxHQUFLLENBQUMsS0FBSyxHQUFHLEVBQUU7O0VBRWhCLEtBQUtDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3ZDQSxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQWVsQixPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQ3BFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDeEM7O0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7R0FDZDs7RUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDdEIsT0FBTyxLQUFLO0NBQ2I7In0=