47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | var arrayEach = require('./_arrayEach'), | ||
|  |     arrayIncludes = require('./_arrayIncludes'); | ||
|  | 
 | ||
|  | /** Used to compose bitmasks for function metadata. */ | ||
|  | var WRAP_BIND_FLAG = 1, | ||
|  |     WRAP_BIND_KEY_FLAG = 2, | ||
|  |     WRAP_CURRY_FLAG = 8, | ||
|  |     WRAP_CURRY_RIGHT_FLAG = 16, | ||
|  |     WRAP_PARTIAL_FLAG = 32, | ||
|  |     WRAP_PARTIAL_RIGHT_FLAG = 64, | ||
|  |     WRAP_ARY_FLAG = 128, | ||
|  |     WRAP_REARG_FLAG = 256, | ||
|  |     WRAP_FLIP_FLAG = 512; | ||
|  | 
 | ||
|  | /** Used to associate wrap methods with their bit flags. */ | ||
|  | var wrapFlags = [ | ||
|  |   ['ary', WRAP_ARY_FLAG], | ||
|  |   ['bind', WRAP_BIND_FLAG], | ||
|  |   ['bindKey', WRAP_BIND_KEY_FLAG], | ||
|  |   ['curry', WRAP_CURRY_FLAG], | ||
|  |   ['curryRight', WRAP_CURRY_RIGHT_FLAG], | ||
|  |   ['flip', WRAP_FLIP_FLAG], | ||
|  |   ['partial', WRAP_PARTIAL_FLAG], | ||
|  |   ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], | ||
|  |   ['rearg', WRAP_REARG_FLAG] | ||
|  | ]; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Updates wrapper `details` based on `bitmask` flags. | ||
|  |  * | ||
|  |  * @private | ||
|  |  * @returns {Array} details The details to modify. | ||
|  |  * @param {number} bitmask The bitmask flags. See `createWrap` for more details. | ||
|  |  * @returns {Array} Returns `details`. | ||
|  |  */ | ||
|  | function updateWrapDetails(details, bitmask) { | ||
|  |   arrayEach(wrapFlags, function(pair) { | ||
|  |     var value = '_.' + pair[0]; | ||
|  |     if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { | ||
|  |       details.push(value); | ||
|  |     } | ||
|  |   }); | ||
|  |   return details.sort(); | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = updateWrapDetails; |