time-to-botec

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

_compareAscending.js (1343B)


      1 var isSymbol = require('./isSymbol');
      2 
      3 /**
      4  * Compares values to sort them in ascending order.
      5  *
      6  * @private
      7  * @param {*} value The value to compare.
      8  * @param {*} other The other value to compare.
      9  * @returns {number} Returns the sort order indicator for `value`.
     10  */
     11 function compareAscending(value, other) {
     12   if (value !== other) {
     13     var valIsDefined = value !== undefined,
     14         valIsNull = value === null,
     15         valIsReflexive = value === value,
     16         valIsSymbol = isSymbol(value);
     17 
     18     var othIsDefined = other !== undefined,
     19         othIsNull = other === null,
     20         othIsReflexive = other === other,
     21         othIsSymbol = isSymbol(other);
     22 
     23     if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
     24         (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
     25         (valIsNull && othIsDefined && othIsReflexive) ||
     26         (!valIsDefined && othIsReflexive) ||
     27         !valIsReflexive) {
     28       return 1;
     29     }
     30     if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
     31         (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
     32         (othIsNull && valIsDefined && valIsReflexive) ||
     33         (!othIsDefined && valIsReflexive) ||
     34         !othIsReflexive) {
     35       return -1;
     36     }
     37   }
     38   return 0;
     39 }
     40 
     41 module.exports = compareAscending;