time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

_createMathOperation.js (1104B)


      1 var baseToNumber = require('./_baseToNumber'),
      2     baseToString = require('./_baseToString');
      3 
      4 /**
      5  * Creates a function that performs a mathematical operation on two values.
      6  *
      7  * @private
      8  * @param {Function} operator The function to perform the operation.
      9  * @param {number} [defaultValue] The value used for `undefined` arguments.
     10  * @returns {Function} Returns the new mathematical operation function.
     11  */
     12 function createMathOperation(operator, defaultValue) {
     13   return function(value, other) {
     14     var result;
     15     if (value === undefined && other === undefined) {
     16       return defaultValue;
     17     }
     18     if (value !== undefined) {
     19       result = value;
     20     }
     21     if (other !== undefined) {
     22       if (result === undefined) {
     23         return other;
     24       }
     25       if (typeof value == 'string' || typeof other == 'string') {
     26         value = baseToString(value);
     27         other = baseToString(other);
     28       } else {
     29         value = baseToNumber(value);
     30         other = baseToNumber(other);
     31       }
     32       result = operator(value, other);
     33     }
     34     return result;
     35   };
     36 }
     37 
     38 module.exports = createMathOperation;