chain-able
Version:
interfaces that describe their intentions.
28 lines (22 loc) • 2.22 kB
JavaScript
var isObj = require('../is/obj')
var getPathSegments = require('./segments')
var isDottable = require('./dottable')
module.exports = function dotHas(obj, path) {
if (!isDottable(obj, path)) {
return false
}
var pathArr = getPathSegments(path)
for (var i = 0; i < pathArr.length; i++) {
if (isObj(obj)) {
if (!(pathArr[i] in obj)) {
return false
}
obj = obj[pathArr[i]]
}
else {
return false
}
}
return true
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLmpzIiwic291cmNlcyI6WyJoYXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNPYmogPSByZXF1aXJlKCcuLi9pcy9vYmonKVxuY29uc3QgZ2V0UGF0aFNlZ21lbnRzID0gcmVxdWlyZSgnLi9zZWdtZW50cycpXG5jb25zdCBpc0RvdHRhYmxlID0gcmVxdWlyZSgnLi9kb3R0YWJsZScpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZG90SGFzKG9iaiwgcGF0aCkge1xuICBpZiAoIWlzRG90dGFibGUob2JqLCBwYXRoKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgcGF0aEFyciA9IGdldFBhdGhTZWdtZW50cyhwYXRoKVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aEFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpc09iaihvYmopKSB7XG4gICAgICBpZiAoIShwYXRoQXJyW2ldIGluIG9iaikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIG9iaiA9IG9ialtwYXRoQXJyW2ldXVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG4iXSwibmFtZXMiOlsiY29uc3QiLCJsZXQiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDbENBLEdBQUssQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUM3Q0EsR0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDOztBQUV4QyxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUU7RUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUU7SUFDMUIsT0FBTyxLQUFLO0dBQ2I7O0VBRURBLEdBQUssQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQzs7RUFFckMsS0FBS0MsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdkMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7TUFDZCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUU7UUFDeEIsT0FBTyxLQUFLO09BQ2I7O01BRUQsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdEI7U0FDSTtNQUNILE9BQU8sS0FBSztLQUNiO0dBQ0Y7O0VBRUQsT0FBTyxJQUFJO0NBQ1o7In0=