1 var isSymbol = require('./isSymbol');
4 * Compares values to sort them in ascending order.
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`.
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);
18 var othIsDefined = other !== undefined,
19 othIsNull = other === null,
20 othIsReflexive = other === other,
21 othIsSymbol = isSymbol(other);
23 if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
24 (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
25 (valIsNull && othIsDefined && othIsReflexive) ||
26 (!valIsDefined && othIsReflexive) ||
30 if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
31 (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
32 (othIsNull && valIsDefined && valIsReflexive) ||
33 (!othIsDefined && valIsReflexive) ||
41 module.exports = compareAscending;