diff options
Diffstat (limited to 'node_modules/unset-value/index.js')
| -rw-r--r-- | node_modules/unset-value/index.js | 32 | 
1 files changed, 32 insertions, 0 deletions
| diff --git a/node_modules/unset-value/index.js b/node_modules/unset-value/index.js new file mode 100644 index 0000000..a919010 --- /dev/null +++ b/node_modules/unset-value/index.js @@ -0,0 +1,32 @@ +/*! + * unset-value <https://github.com/jonschlinkert/unset-value> + * + * Copyright (c) 2015, 2017, Jon Schlinkert. + * Released under the MIT License. + */ + +'use strict'; + +var isObject = require('isobject'); +var has = require('has-value'); + +module.exports = function unset(obj, prop) { +  if (!isObject(obj)) { +    throw new TypeError('expected an object.'); +  } +  if (obj.hasOwnProperty(prop)) { +    delete obj[prop]; +    return true; +  } + +  if (has(obj, prop)) { +    var segs = prop.split('.'); +    var last = segs.pop(); +    while (segs.length && segs[segs.length - 1].slice(-1) === '\\') { +      last = segs.pop().slice(0, -1) + '.' + last; +    } +    while (segs.length) obj = obj[prop = segs.shift()]; +    return (delete obj[last]); +  } +  return true; +}; | 
