| var isSymbol = require('./isSymbol'); | |
| 
 | |
| /** | |
|  * Compares values to sort them in ascending order. | |
|  * | |
|  * @private | |
|  * @param {*} value The value to compare. | |
|  * @param {*} other The other value to compare. | |
|  * @returns {number} Returns the sort order indicator for `value`. | |
|  */ | |
| function compareAscending(value, other) { | |
|   if (value !== other) { | |
|     var valIsDefined = value !== undefined, | |
|         valIsNull = value === null, | |
|         valIsReflexive = value === value, | |
|         valIsSymbol = isSymbol(value); | |
| 
 | |
|     var othIsDefined = other !== undefined, | |
|         othIsNull = other === null, | |
|         othIsReflexive = other === other, | |
|         othIsSymbol = isSymbol(other); | |
| 
 | |
|     if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || | |
|         (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || | |
|         (valIsNull && othIsDefined && othIsReflexive) || | |
|         (!valIsDefined && othIsReflexive) || | |
|         !valIsReflexive) { | |
|       return 1; | |
|     } | |
|     if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || | |
|         (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || | |
|         (othIsNull && valIsDefined && valIsReflexive) || | |
|         (!othIsDefined && valIsReflexive) || | |
|         !othIsReflexive) { | |
|       return -1; | |
|     } | |
|   } | |
|   return 0; | |
| } | |
| 
 | |
| module.exports = compareAscending;
 |