Sha256: 60985ae069a33d88e38a1de436e9c3e27750ad4fb9954a664c11bf1cee03aeed
Contents?: true
Size: 1.06 KB
Versions: 46
Compression:
Stored size: 1.06 KB
Contents
"use strict"; var strCompare = require("../string/#/case-insensitive-compare") , isObject = require("./is-object") , isValue = require("./is-value") , numIsNaN = require("../number/is-nan") , resolve , typeMap; typeMap = { undefined: 0, object: 1, boolean: 2, string: 3, number: 4 }; resolve = function (a) { if (isObject(a)) { if (typeof a.valueOf !== "function") return NaN; a = a.valueOf(); if (isObject(a)) { if (typeof a.toString !== "function") return NaN; a = a.toString(); if (typeof a !== "string") return NaN; } } return a; }; module.exports = function (val1, val2) { if (val1 === val2) return 0; // Same val1 = resolve(val1); val2 = resolve(val2); // eslint-disable-next-line eqeqeq if (val1 == val2) return typeMap[typeof val1] - typeMap[typeof val2]; if (!isValue(val1)) return -1; if (!isValue(val2)) return 1; if (typeof val1 === "string" || typeof val2 === "string") { return strCompare.call(val1, val2); } if (numIsNaN(val1) && numIsNaN(val2)) return 0; // Jslint: ignore return Number(val1) - Number(val2); };
Version data entries
46 entries across 46 versions & 3 rubygems