You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							40 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							40 lines
						
					
					
						
							1.1 KiB
						
					
					
				/** Error message constants. */ | 
						|
var FUNC_ERROR_TEXT = 'Expected a function'; | 
						|
 | 
						|
/** | 
						|
 * Creates a function that negates the result of the predicate `func`. The | 
						|
 * `func` predicate is invoked with the `this` binding and arguments of the | 
						|
 * created function. | 
						|
 * | 
						|
 * @static | 
						|
 * @memberOf _ | 
						|
 * @since 3.0.0 | 
						|
 * @category Function | 
						|
 * @param {Function} predicate The predicate to negate. | 
						|
 * @returns {Function} Returns the new negated function. | 
						|
 * @example | 
						|
 * | 
						|
 * function isEven(n) { | 
						|
 *   return n % 2 == 0; | 
						|
 * } | 
						|
 * | 
						|
 * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); | 
						|
 * // => [1, 3, 5] | 
						|
 */ | 
						|
function negate(predicate) { | 
						|
  if (typeof predicate != 'function') { | 
						|
    throw new TypeError(FUNC_ERROR_TEXT); | 
						|
  } | 
						|
  return function() { | 
						|
    var args = arguments; | 
						|
    switch (args.length) { | 
						|
      case 0: return !predicate.call(this); | 
						|
      case 1: return !predicate.call(this, args[0]); | 
						|
      case 2: return !predicate.call(this, args[0], args[1]); | 
						|
      case 3: return !predicate.call(this, args[0], args[1], args[2]); | 
						|
    } | 
						|
    return !predicate.apply(this, args); | 
						|
  }; | 
						|
} | 
						|
 | 
						|
module.exports = negate;
 | 
						|
 |