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.
		
		
		
		
		
			
		
			
				
					
					
						
							38 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							38 lines
						
					
					
						
							1.1 KiB
						
					
					
				var baseToNumber = require('./_baseToNumber'), | 
						|
    baseToString = require('./_baseToString'); | 
						|
 | 
						|
/** | 
						|
 * Creates a function that performs a mathematical operation on two values. | 
						|
 * | 
						|
 * @private | 
						|
 * @param {Function} operator The function to perform the operation. | 
						|
 * @param {number} [defaultValue] The value used for `undefined` arguments. | 
						|
 * @returns {Function} Returns the new mathematical operation function. | 
						|
 */ | 
						|
function createMathOperation(operator, defaultValue) { | 
						|
  return function(value, other) { | 
						|
    var result; | 
						|
    if (value === undefined && other === undefined) { | 
						|
      return defaultValue; | 
						|
    } | 
						|
    if (value !== undefined) { | 
						|
      result = value; | 
						|
    } | 
						|
    if (other !== undefined) { | 
						|
      if (result === undefined) { | 
						|
        return other; | 
						|
      } | 
						|
      if (typeof value == 'string' || typeof other == 'string') { | 
						|
        value = baseToString(value); | 
						|
        other = baseToString(other); | 
						|
      } else { | 
						|
        value = baseToNumber(value); | 
						|
        other = baseToNumber(other); | 
						|
      } | 
						|
      result = operator(value, other); | 
						|
    } | 
						|
    return result; | 
						|
  }; | 
						|
} | 
						|
 | 
						|
module.exports = createMathOperation;
 | 
						|
 |