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.
		
		
		
		
		
			
		
			
				
					
					
						
							39 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							39 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;
 |