00001 var arrayMap = require('./_arrayMap'), 00002 baseClone = require('./_baseClone'), 00003 baseUnset = require('./_baseUnset'), 00004 castPath = require('./_castPath'), 00005 copyObject = require('./_copyObject'), 00006 customOmitClone = require('./_customOmitClone'), 00007 flatRest = require('./_flatRest'), 00008 getAllKeysIn = require('./_getAllKeysIn'); 00009 00011 var CLONE_DEEP_FLAG = 1, 00012 CLONE_FLAT_FLAG = 2, 00013 CLONE_SYMBOLS_FLAG = 4; 00014 00035 var omit = flatRest(function(object, paths) { 00036 var result = {}; 00037 if (object == null) { 00038 return result; 00039 } 00040 var isDeep = false; 00041 paths = arrayMap(paths, function(path) { 00042 path = castPath(path, object); 00043 isDeep || (isDeep = path.length > 1); 00044 return path; 00045 }); 00046 copyObject(object, getAllKeysIn(object), result); 00047 if (isDeep) { 00048 result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); 00049 } 00050 var length = paths.length; 00051 while (length--) { 00052 baseUnset(result, paths[length]); 00053 } 00054 return result; 00055 }); 00056 00057 module.exports = omit;