00001 var isSymbol = require('./isSymbol'); 00002 00011 function compareAscending(value, other) { 00012 if (value !== other) { 00013 var valIsDefined = value !== undefined, 00014 valIsNull = value === null, 00015 valIsReflexive = value === value, 00016 valIsSymbol = isSymbol(value); 00017 00018 var othIsDefined = other !== undefined, 00019 othIsNull = other === null, 00020 othIsReflexive = other === other, 00021 othIsSymbol = isSymbol(other); 00022 00023 if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || 00024 (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || 00025 (valIsNull && othIsDefined && othIsReflexive) || 00026 (!valIsDefined && othIsReflexive) || 00027 !valIsReflexive) { 00028 return 1; 00029 } 00030 if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || 00031 (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || 00032 (othIsNull && valIsDefined && valIsReflexive) || 00033 (!othIsDefined && valIsReflexive) || 00034 !othIsReflexive) { 00035 return -1; 00036 } 00037 } 00038 return 0; 00039 } 00040 00041 module.exports = compareAscending;