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